How to find the index of n largest elements in a list or np.array, Python

前端 未结 4 686
夕颜
夕颜 2021-02-05 09:05

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]

4条回答
  •  执笔经年
    2021-02-05 09:51

    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])
    

提交回复
热议问题