我的数据集如下所示:
>>> difference
array([[ -1, 0, 4],
[-20, 2, -1],
[ 2, -20, 0]])
我希望将值从+2到-2替换为nan。
结果数组应如下所示。
>>> difference
array([[ nan, nan, 4.],
[-20., nan, nan],
[ nan, -20., nan]])
答案 0 :(得分:6)
使用np.abs(difference)<=2
获取范围的True值,一种方式是使用np.where
,就像这样 -
np.where(np.abs(difference)<=2,np.nan,difference)
示例运行 -
In [5]: difference
Out[5]:
array([[ -1, 0, 4],
[-20, 2, -1],
[ 2, -20, 0]])
In [6]: np.where(np.abs(difference)<=2,np.nan,difference)
Out[6]:
array([[ nan, nan, 4.],
[-20., nan, nan],
[ nan, -20., nan]])
为了完整起见,获得此类掩码的更明确方法是使用(difference <=2) & (difference >=-2)
而不是np.abs(difference)<=2
。
答案 1 :(得分:1)
根据浮点运算,你可以这样做:
In [7]: valid =abs(difference)>2
In [8]: valid/valid *difference
Out[8]:
array([[ nan, nan, 4.],
[-20., nan, nan],
[ nan, -20., nan]])