Is there a better way of making numpy.argmin() ignore NaN values
我想得到包含NaN的numpy数组的最小值的索引,我希望它们被忽略
1 2 3 | >>> a = array([ nan, 2.5, 3., nan, 4., 5.]) >>> a array([ NaN, 2.5, 3. , NaN, 4. , 5. ]) |
如果我运行argmin,它将返回第一个NaN的索引
1 2 | >>> a.argmin() 0 |
我用Infs代替NaNs然后运行argmin
1 2 3 4 5 | >>> a[isnan(a)] = Inf >>> a array([ Inf, 2.5, 3. , Inf, 4. , 5. ]) >>> a.argmin() 1 |
我的困境如下:我宁愿不将NaNs改为Infs然后在我完成argmin后再回来(因为NaNs后来在代码中有意义)。 有一个更好的方法吗?
还有一个问题是,如果a的所有原始值都是NaN,结果应该是什么? 在我的实现中,答案是0
当然! 使用
1 2 3 4 | import numpy as np a = np.array([ np.nan, 2.5, 3., np.nan, 4., 5.]) print(np.nanargmin(a)) # 1 |
还有
在
有关忽略