首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有更好的方法使numpy.argmin()忽略NaN值

是否有更好的方法使numpy.argmin()忽略NaN值
EN

Stack Overflow用户
提问于 2010-05-12 17:07:15
回答 1查看 13K关注 0票数 23

我想要得到包含NaNs的numpy数组的min值的索引,并且我希望忽略它们。

代码语言:javascript
运行
复制
>>> a = array([ nan,   2.5,   3.,  nan,   4.,   5.])  
>>> a  
array([ NaN,  2.5,  3. ,  NaN,  4. ,  5. ])  

如果运行argmin,它将返回第一个NaN的索引。

代码语言:javascript
运行
复制
>>> a.argmin()  
0  

我用Infs替换NaNs,然后运行argmin。

代码语言:javascript
运行
复制
>>> a[isnan(a)] = Inf  
>>> a  
array([ Inf,  2.5,  3. ,  Inf,  4. ,  5. ])  
>>> a.argmin()  
1  

,我的困境是:,我不希望将NaNs更改为Infs,然后在我完成argmin之后返回(因为NaNs在后面的代码中有意义)。有更好的方法吗?

还有一个问题,如果a的所有原始值都是NaN,那么结果应该是什么?在我的实现中,答案是0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-12 17:10:15

好的!使用nanargmin

代码语言:javascript
运行
复制
import numpy as np
a = np.array([ np.nan,   2.5,   3.,  np.nan,   4.,   5.])
print(np.nanargmin(a))
# 1

还有nansumnanmaxnanargmaxnanmin

scipy.stats中,有nanmeannanmedian

若要忽略寻找更多的方法nan,请查看蒙面阵列

票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2821072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档