Python 替换包含NaN的numpy数组中的值
在运行上面的代码时,我得到了foll。警告,我理解这个警告的原因,但是如何避免呢Python 替换包含NaN的numpy数组中的值,python,numpy,nan,Python,Numpy,Nan,在运行上面的代码时,我得到了foll。警告,我理解这个警告的原因,但是如何避免呢 运行时警告:在较大值中遇到无效值存储有效值的索引(非NAN)。首先,我们将使用这些索引索引到数组中,并执行比较以获得掩码,然后再次使用该掩码索引到这些索引中,以检索回与原始顺序对应的索引。使用原始的有序索引,我们可以将输入数组中的元素分配给NaNs 因此,实施/解决方案将是:- aa = np.array([2.0, np.NaN]) aa[aa>1.0] = np.NaN 样本运行- idx = np.f
运行时警告:在较大值中遇到无效值
存储有效值的索引(非NAN)。首先,我们将使用这些索引索引到数组中,并执行比较以获得掩码,然后再次使用该掩码索引到这些索引中,以检索回与原始顺序对应的索引。使用原始的有序索引,我们可以将输入数组中的元素分配给NaNs
因此,实施/解决方案将是:-
aa = np.array([2.0, np.NaN])
aa[aa>1.0] = np.NaN
样本运行-
idx = np.flatnonzero(~np.isnan(aa))
aa[idx[aa[idx] > 1.0]] = np.nan
您是要替换numpy数组中的NaN值,还是只删除运行时警告?如果是后者,
np.seterr(invalid='ignore')
就足够了。请参阅Py3中的内容,与np.nan的比较会产生False而没有警告。这对多维数组有效吗?我之所以出错,是因为idx
使用线性索引。@Darcy对于多维数组,您需要使用np。其中
将为我们提供所有DIM的索引,然后使用这些索引和分配。
In [106]: aa # Input array with NaNs
Out[106]: array([ 0., 3., nan, 0., 9., 6., 6., nan, 18., 6.])
In [107]: idx = np.flatnonzero(~np.isnan(aa)) # Store valid indices
In [108]: idx
Out[108]: array([0, 1, 3, 4, 5, 6, 8, 9])
In [109]: aa[idx[aa[idx] > 1.0]] = np.nan # Do the assignment
In [110]: aa # Verify
Out[110]: array([ 0., nan, nan, 0., nan, nan, nan, nan, nan, nan])