为了账号安全,请及时绑定邮箱和手机立即绑定

如何在列表或np.array中找到n个最大元素的索引,Python

如何在列表或np.array中找到n个最大元素的索引,Python

米脂 2021-03-19 17:15:55
是否有内置函数或一种非常简单的方法来查找列表或numpy数组中n个最大元素的索引?K = [1,2,2,4,5,5,6,10]找到最大的5个元素的索引?我不止一次地计算重复项,并且输出应该是那些最大数字的索引的列表
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

也许像这样:


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

或使用numpy,您可以使用argsort:


>>> np.argsort(K)[-5:]

array([0, 1, 5, 3, 7])

argsort 也是一种方法:


>>> K = np.array(K)

>>> K.argsort()[-5:]

array([0, 1, 5, 3, 7])

>>> K[K.argsort()[-5:]]

array([ 4,  5,  5,  6, 10])


查看完整回答
反对 回复 2021-03-29
?
互换的青春

TA贡献1797条经验 获得超6个赞

考虑以下代码,


 N=5

 K = [1,10,2,4,5,5,6,2]

 #store list in tmp to retrieve index

 tmp=list(K)

 #sort list so that largest elements are on the far right

 K.sort()

 #To get the 5 largest elements

 print K[-N:]

 #To get the 5th largest element

 print K[-N]

 #get index of the 5th largest element

 print tmp.index(K[-N])

如果您希望忽略重复项,请按以下方式使用set(),


 N=5

 K = [1,10,2,4,5,5,6,2]

 #store list in tmp to retrieve index

 tmp=list(K)

 #sort list so that largest elements are on the far right

 K.sort()

 #Putting the list to a set removes duplicates

 K=set(K)

 #change K back to list since set does not support indexing

 K=list(K)

 #To get the 5 largest elements

 print K[-N:]

 #To get the 5th largest element

 print K[-N]

 #get index of the 5th largest element

 print tmp.index(K[-N])

希望其中之一可以解决您的问题:)


查看完整回答
反对 回复 2021-03-29
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这应该工作:


K = [1,2,2,4,5,5,6,10]

num = 5

print 'K %s.' % (sorted(K, reverse=True)[:num])


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 369 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号