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

是否有内置函数或一种非常简单的方法来查找列表或numpy数组中n个最大元素的索引?

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

找到最大的5个元素的索引?

我不止一次地计算重复项,并且输出应该是那些最大数字的索引的列表


米脂
浏览 370回答 3
3回答

天涯尽头无女友

也许像这样:>>> 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])

互换的青春

考虑以下代码, 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])希望其中之一可以解决您的问题:)

慕尼黑5688855

这应该工作:K = [1,2,2,4,5,5,6,10]num = 5print 'K %s.' % (sorted(K, reverse=True)[:num])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python