我有两个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循环的情况下执行此操作?
提前致谢。
答案 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.])