如何设置numpy到nan的值范围?

时间:2016-03-19 08:14:48

标签: python numpy

我的数据集如下所示:

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

2 个答案:

答案 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]])