如何在numpy数组中获取N个最大值的索引?

问题:

Numpy提出了一种通过np.argmax获取数组的最大值的索引的方法。
我想要一个类似的东西,但返回N个最大值的索引。
例如,如果我有一个数组[1, 3, 2, 4, 5],它function(array, n=3)将返回[4, 3, 1]
谢谢 :)

回答:

我能想出的最简单的是:

In [1]: import numpy as np

In [2]: arr = np.array([1, 3, 2, 4, 5])

In [3]: arr.argsort()[-3:][::-1]
Out[3]: array([4, 3, 1])

这涉及到一个完整的数组。我不知道numpy是否提供了一种内置的部分排序方式;到目前为止我还没找到一个。
如果这个解决方案太慢了(特别是对于小的n),可能值得一提的是在Cython

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to get indices of N maximum values in a numpy array?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 3 = 2