Python 如何将numpy中的值范围设置为nan?

Python 如何将numpy中的值范围设置为nan?,python,numpy,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]]) 根据

我的数据集如下所示:

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

根据浮点运算使用
np.abs(差分),您可以执行以下操作:

In [7]: valid =abs(difference)>2

In [8]: valid/valid *difference
Out[8]: 
array([[ nan,  nan,   4.],
       [-20.,  nan,  nan],
       [ nan, -20.,  nan]])

np.其中
不是严格必需的。还可以使用真值数组为差异数组编制索引。例如,
差异[np.abs(差异)
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]])
In [7]: valid =abs(difference)>2

In [8]: valid/valid *difference
Out[8]: 
array([[ nan,  nan,   4.],
       [-20.,  nan,  nan],
       [ nan, -20.,  nan]])