Get indices of the top N values of a list

前端 未结 2 1348
迷失自我
迷失自我 2020-12-13 01:55

I have a list say a = [5,3,1,4,10]. I need to get indices of the top two values of the list, that is for 5 and 10 I would get [0

相关标签:
2条回答
  • 2020-12-13 02:01

    Just a NumPy alternative:

    import numpy as np
    
    top_2_idx = np.argsort(a)[-2:]
    top_2_values = [a[i] for i in top_2_idx]
    
    0 讨论(0)
  • 2020-12-13 02:09
    sorted(range(len(a)), key=lambda i: a[i])[-2:]
    

    or

    sorted(range(len(a)), key=lambda i: a[i], reverse=True)[:2]
    

    or

    import operator
    
    zip(*sorted(enumerate(a), key=operator.itemgetter(1)))[0][-2:]
    

    or (for long lists), consider using heapq.nlargest

    zip(*heapq.nlargest(2, enumerate(a), key=operator.itemgetter(1)))[0]
    
    0 讨论(0)
提交回复
热议问题