如何更改具有多个条件的 numpy 数组中的每个值

how to change every value in a numpy array with more than one condition

我之前曾针对 1 个条件问过一些更苗条的问题,这是一个简单的答案,而且效果很好。

现在我正试图找到一种方法,在两种情况下做同样的事情。

 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()

尝试:

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

您可以使用逻辑与操作 & 来执行此操作,如下所示,使用矢量化(不使用 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)