我有一个数组a=np.array([ -1, 20, 34, 4, 5, -60, -7, 8])
,我想以这种方式测试2个条件:p=np.logical_or(a<=5, a>=25)
。通过这种方式,我有一个逻辑数组(True-False, 0-1)
。
现在我想将满足p的True条件的数组a的值设置为预定义的值,例如NaN。
p
array([ True, False, True, True, True, True, True, False], dtype=bool)
我想:
value=array([NaN, 20, NaN, NaN, NaN, NaN, NaN, 8])
我该怎么做?
答案 0 :(得分:4)
使用numpy.where
:
>>> np.where((a<=5) | (a>=25), np.nan, a)
array([ nan, 20., nan, nan, nan, nan, nan, 8.])
>>> p = np.logical_or(a<=5, a>=25)
>>> np.where(p, np.nan, a)
array([ nan, 20., nan, nan, nan, nan, nan, 8.])
或使用a
创建一个类型为float的新数组,并使用np.nan
将p
指定给其索引:
>>> a_ = a.astype(float)
>>> a_[p] = np.nan
>>> a_
array([ nan, 20., nan, nan, nan, nan, nan, 8.])