jef*_*ind 7 python arrays math numpy
我需要一个好的,快速的方法来从一个可能具有任意多个nan和/或inf值的numpy数组中找到10个最小的实数值.
我需要确定这些最小实际值的索引,而不是值本身.
我从numpy 找到了argmin和nanargmin函数.他们并没有真正完成工作,因为我还想指定多于1个值,例如我想要最小的100个值.此外,它们都将-inf值返回为数组中存在的最小值.
heapq.nsmallest一种工作,但它也返回nan和-inf值作为最小值.它也没有给我我正在寻找的指数.
这里的任何帮助将不胜感激.
YXD*_*YXD 11
应该抛出的唯一值是负无限值.所以尝试:
import numpy as np
a = np.random.rand(20)
a[4] = -np.inf
k = 10
a[np.isneginf(a)] = inf
result = a[np.argsort(a)[:k]]
Run Code Online (Sandbox Code Playgroud)