リストまたはnumpy配列のn個の最大要素のインデックスを見つけるための組み込み関数または非常に簡単な方法はありますか?リストまたはnp.array、Pythonのn個の最大要素のインデックスの検索方法
K = [1,2,2,4,5,5,6,10]
最大5つの要素のインデックスを検索しますか?
のようなものかもしれない
リストまたはnumpy配列のn個の最大要素のインデックスを見つけるための組み込み関数または非常に簡単な方法はありますか?リストまたはnp.array、Pythonのn個の最大要素のインデックスの検索方法
K = [1,2,2,4,5,5,6,10]
最大5つの要素のインデックスを検索しますか?
のようなものかもしれない
を私は何度も重複以上を数え、そして出力は、それらの最大の数字のインデックスのリストでなければなりません:
>>> 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])
ありがとうございました。これは明確で健全な答えの1つです –
また、 'heapq; heapq.nlargest(n、range(len(K))、key = lambda x:K [x] –
は
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])
は、うまくいけば、そのうちの一つは、あなたの質問:)
をカバーし、あなたが重複を無視したい場合は、その後、次のコード、
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])
を考えてみましょう次のように)(設定を使用します
これは動作するはずです:
K = [1,2,2,4,5,5,6,10]
num = 5
print 'K %s.' % (sorted(K, reverse=True)[:num])
ここに期待される出力は? –
重複を複数回カウントしていますか? – Colleen
[numpyの配列でN個の最大値のインデックスを取得する方法](http://stackoverflow.com/questions/6910641/how-to-get-indices-of-n-maximum-values-in- a-numpy-array) –