Python:在 List 或 numpy.ndarry 中查找最大的 Top-n 值的索引 [重复]
Posted
技术标签:
【中文标题】Python:在 List 或 numpy.ndarry 中查找最大的 Top-n 值的索引 [重复]【英文标题】:Python: Find most big Top-n values' index in List or numpy.ndarry [duplicate] 【发布时间】:2020-10-10 08:40:32 【问题描述】:例如:
a = [1,5,6,2,3]
result = most_find(a, 3)
reslut
[2,1,4] # the index of 6, 5, 3 in a
我知道如何用复杂的方式实现这个功能......
我的问题
有没有 Python 或 numpy 的内置函数可以处理?
【问题讨论】:
这能回答你的问题吗? How do I get indices of N maximum values in a NumPy array? 好的,谢谢!这是一种简单的工作方式 如果已经是numpy
数组,那么链接的argsort
或argpartition
应该是最快的。但是如果是列表,那么列表排序方法可能会更好。
@hpaulj,好的,我明白了!谢谢。我在想这个问题,直接的方法可能更好
【参考方案1】:
Sushanth 有一个内置链接,但您也可以像这样实现它:sorted(range(len(a)), key=lambda i: -a[i])[:3]
【讨论】:
【参考方案2】:按值对索引进行排序,
def most_find(sequence, n):
lst = sorted(range(len(sequence)), key=lambda x:sequence[x], reverse=True)
return lst[:n]
a = [1, 5, 6, 2, 3]
result = most_find(a, 3)
print(result)
【讨论】:
【参考方案3】:有没有 Python 或 numpy 的内置函数可以处理?
事实上,有!它叫numpy.argsort()
:
import numpy as np
a = [1, 5, 6, 2, 3]
print(np.array(a).argsort()[-3:][::-1]) # If you want to list the indexes of the 4 greatest numbers, change the -3 to -4, etc.
输出:
[2 1 4]
【讨论】:
以上是关于Python:在 List 或 numpy.ndarry 中查找最大的 Top-n 值的索引 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在Python中,何时使用Dictionary,List或Set?
Python:在 List 或 numpy.ndarry 中查找最大的 Top-n 值的索引 [重复]