如何有条件地更新np.array?

How to update np.array conditionally?

我有两个 numpy 数组:

Out[23]: a = np.array([3, 7, 8, 9, 2], dtype=float)
Out[24]: b = np.array([5, 6, 7, 10, 3], dtype=float)

我需要比较 a 和 b,并更新数组 b,使其元素包含 较高的值或 np.nan

示例代码:

for i in range(len(b)):
    b[i] = b[i] if b[i] > a[i] else np.nan

结果:

b
Out[33]: array([  5.,  nan,  nan,  10.,   3.])

有没有不用 for 循环的方法?

提前致谢。

您可以使用np.where

>>> np.where(b > a, b, np.nan)
array([  5.,  nan,  nan,  10.,   3.])

使用np.where评估向量中的条件

b = np.where(b>a,b,np.nan)

np.where 需要 (condition, value_when_true, value_when_false)

b[b <= a] = np.nan

演示:

>> import numpy as np
>> a = np.array([3, 7, 8, 9, 2], dtype=float)
>> b = np.array([5, 6, 7, 10, 3], dtype=float)
>> b[b <= a] = np.nan
>> b
array([  5.,  nan,  nan,  10.,   3.])