如何使用多个条件更改numpy数组中的每个值

2024-09-29 02:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我问了一些更苗条的前1条件,这是一个简单的答案,工程伟大。 change every value in a numpy array with a condition

现在我正试图找到一种方法,在两种情况下也能做到这一点

 for j in range(5,45):
     # inter_data[(j*100) <= inter_data < ((j+1)*100)] = (j*100) + 50
     inter_data = np.where(((j + 1) * 100) > inter_data > (j * 100), (j * 100) + 50, inter_data)

我试过用同样的方法,但没用。似乎只有一个条件能起作用

它给出了以下两种情况下的错误

ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()


Tags: 方法答案innumpydatavaluewith情况
2条回答

尝试:

inter_data = np.where((((j + 1) * 100) > inter_data) & (inter_data > (j * 100)), (j * 100) + 50, inter_data)

您可以使用逻辑and操作&来实现如下所示的使用向量化(不使用python循环)


import numpy as np
ar = np.arange(5,45)
inter_data = np.arange(100, 100+40*100, 100)


cond = (ar+1) * 100 > inter_data
cond &= (ar) * 100 < inter_data

np.where(cond, ar*100+50, inter_data)

相关问题 更多 >