Python 数组中的Numpy条件乘法数据(如果为真乘法A,则为假乘法B)

Python 数组中的Numpy条件乘法数据(如果为真乘法A,则为假乘法B),python,arrays,numpy,Python,Arrays,Numpy,假设我有一个值为0~255的大数组。我希望数组中每一个大于100的元素都乘以1.2,否则乘以0.8 这听起来很简单,但除了遍历所有变量并将其逐个相乘之外,我找不到其他方法。如果arr是您的数组,那么这应该可以工作: arr[arr > 100] *= 1.2 arr[arr <= 100] *= 0.8 arr[arr>100]*=1.2 arr[arr 100 le_idx=arrnp.where是答案。我花时间去搞乱np.place,却不知道它的存在。我的实现速度比np.whe

假设我有一个值为0~255的大数组。我希望数组中每一个大于100的元素都乘以1.2,否则乘以0.8


这听起来很简单,但除了遍历所有变量并将其逐个相乘之外,我找不到其他方法。

如果
arr
是您的数组,那么这应该可以工作:

arr[arr > 100] *= 1.2
arr[arr <= 100] *= 0.8
arr[arr>100]*=1.2
arr[arr 100

le_idx=arr
np.where
是答案。我花时间去搞乱
np.place
,却不知道它的存在。

我的实现速度比
np.where
,也是对@vindvaki的一行改进:

a*=((a>100)*1.2+(a<100)*0.8)

a*=((a>100)*1.2+(因为
np.乘法(a,np.其中(a>100,1.2,.8))
我曾经尝试过这种奇特的索引方法,但我提到的标准只是一个例子。在我打算使用的一些用例中,例如如果1.2是0.2,那么第一个操作也会使值在第二个操作中符合计算条件。@5Arg在这种情况下,您可以在更改数组。请参阅更新的答案。