次のコードを検討してください。
avgDists = np.array([1, 8, 6, 9, 4])
ids = avgDists.argsort()[:n]
これにより、n
最小の要素のインデックスが得られます。これargsort
を降順で使用して、n
最高の要素のインデックスを取得することは可能ですか?
[3, 1, 2]
。あなたの行は[2, 1, 3]
(例としてn == 3の場合)
ids = np.array(avgDists).argsort()[-n:][::-1]
。問題は、リスト全体のコピーを作成しないことです。これは、リストの-
前にを追加したときに得られるものです。OPの小さな例には関係ありませんが、大きなケースの場合もあります。
np.array(avgDists).argsort()[::-1][:n]
です。また、numpyを使用する場合は、numpyのままにします。最初にリストを配列に変換します。avgDist=np.array(avgDists)
それが次のようになりますavgDist.argsort()[::-1][:n}
ids = np.array(avgDists).argsort()[-n:]
ですか?