gpt4 book ai didi

arrays - 有没有更好的方法让 numpy.argmin() 忽略 NaN 值

转载 作者:IT老高 更新时间:2023-10-28 21:18:09 33 4
gpt4 key购买 nike

我想获取包含 NaN 的 numpy 数组的最小值的索引,我希望它们被忽略

>>> a = array([ nan,   2.5,   3.,  nan,   4.,   5.])  
>>> a
array([ NaN, 2.5, 3. , NaN, 4. , 5. ])

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

>>> a.argmin()  
0

我用 Infs 替换 NaN,然后​​运行 ​​argmin

>>> a[isnan(a)] = Inf  
>>> a
array([ Inf, 2.5, 3. , Inf, 4. , 5. ])
>>> a.argmin()
1

我的困境如下:我宁愿不要将 NaN 更改为 Infs,然后在我用完 argmin 后再返回(因为 NaN 稍后在代码中具有含义)。有一个更好的方法吗?

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

最佳答案

当然!使用 nanargmin:

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

For more ways要忽略 nans,请查看 masked arrays .

关于arrays - 有没有更好的方法让 numpy.argmin() 忽略 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2821072/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com