次のコードを検討してください。
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:]ですか?