我想要得到包含NaNs的numpy数组的min值的索引,并且我希望忽略它们。
>>> a = array([ nan, 2.5, 3., nan, 4., 5.])
>>> a
array([ NaN, 2.5, 3. , NaN, 4. , 5. ])
如果运行argmin,它将返回第一个NaN的索引。
>>> a.argmin()
0
我用Infs替换NaNs,然后运行argmin。
>>> a[isnan(a)] = Inf
>>> a
array([ Inf, 2.5, 3. , Inf, 4. , 5. ])
>>> a.argmin()
1
,我的困境是:,我不希望将NaNs更改为Infs,然后在我完成argmin之后返回(因为NaNs在后面的代码中有意义)。有更好的方法吗?
还有一个问题,如果a的所有原始值都是NaN,那么结果应该是什么?在我的实现中,答案是0
发布于 2010-05-12 17:10:15
好的!使用nanargmin
import numpy as np
a = np.array([ np.nan, 2.5, 3., np.nan, 4., 5.])
print(np.nanargmin(a))
# 1
还有nansum
,nanmax
,nanargmax
和nanmin
,
在scipy.stats
中,有nanmean
和nanmedian
。
若要忽略寻找更多的方法的nan
,请查看蒙面阵列。
https://stackoverflow.com/questions/2821072
复制相似问题