尝试分配 NaN 时出现 Numpy 警告

Numpy warning when trying to assign NaN

import numpy as np
import random

aa = np.random.rand(20,20)
aa[aa<0.5] = np.NaN
aa[aa>0.8] = np.NaN

我在代码的最后一行收到警告: RuntimeWarning: invalid value encountered in greater

这是一个合法的警告吗?如何fix/avoid呢?

您是否尝试将小于阈值的值替换为 np.NaN?如果是这样,那么您可以在其他选项中使用它。

import random
a = np.random.rand(5,5)*10
b = np.where(a < 5, np.NaN, a)
[[ 2.334  5.423  4.093  5.061  4.724]
 [ 0.565  0.549  1.228  5.686  5.660]
 [ 0.235  2.560  3.253  9.910  4.977]
 [ 2.750  4.553  8.291  4.013  6.825]
 [ 8.261  9.474  6.319  8.630  5.207]]
[[ nan  5.423  nan  5.061  nan]
 [ nan  nan  nan  5.686  5.660]
 [ nan  nan  nan  9.910  nan]
 [ nan  nan  8.291  nan  6.825]
 [ 8.261  9.474  6.319  8.630  5.207]]

在我的版本中,2 个掩码 运行 很好:

In [388]: aa = np.random.rand(20,20)
In [389]: aa[aa<0.5]=np.NaN
In [390]: np.isnan(aa).sum()
Out[390]: 203
In [391]: aa[aa>0.8]=np.NaN
In [392]: np.isnan(aa).sum()
Out[392]: 279
In [393]: np.__version__
Out[393]: '1.11.2'
In [394]: 

但如果确实出错,我可以通过创建一个掩码并应用一次来绕过它:

In [394]: aa = np.random.rand(20,20)
In [395]: mask = (aa<0.5)|(aa>0.8)
In [396]: aa[mask]=np.nan
In [397]: np.isnan(aa).sum()
Out[397]: 280