Is there a built-in function or a very simple way of finding the index of n largest elements in a list or a numpy array?
K = [1,2,2,4,5,5,6,10]
Maybe something like:
>>> K
[4, 5, 1, 6, 2, 5, 2, 10]
>>> sorted(range(len(K)), key=lambda x: K[x])
[2, 4, 6, 0, 1, 5, 3, 7]
>>> sorted(range(len(K)), key=lambda x: K[x])[-5:]
[0, 1, 5, 3, 7]
or using numpy
, you can use argsort
:
>>> np.argsort(K)[-5:]
array([0, 1, 5, 3, 7])
argsort
is also a method:
>>> K = np.array(K)
>>> K.argsort()[-5:]
array([0, 1, 5, 3, 7])
>>> K[K.argsort()[-5:]]
array([ 4, 5, 5, 6, 10])