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

时间:2018-01-18 19:02:41

标签: python arrays pandas numpy conditional

我有两个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循环的情况下执行此操作?

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以使用np.where

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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.])