다음 코드를 고려하십시오.
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:]
않습니까?