2017-01-12 9 views
-3

첫 번째 출력이 정확합니다.이상한 인덱스 Numpy argsort

>>> np.argsort(np.array([ 0.62678927, 0.36816272, 0.31044763, 0.44873312, 0.3101446 ])) 
array([4, 2, 1, 3, 0]) 

>>> np.argsort(np.array([ 0.36816272, 0.62678927, 0.13509969, 0.54590815, 0.13493432])) 
array([4, 2, 0, 3, 1]) 

거기에 2 시간 지출 후, 나는이 문제가 너무 단순하거나 너무 기술 중 하나입니다 확신 해요 :하지만 어떻게 든 argsort 두 번째 배열에 대한 잘못된 출력을 제공합니다. 나는 아나콘다 가상 환경을 사용하고 있는데 NumPy와 1.11.3 및 1.10.4

+1

정확히 무엇이 문제입니까? 출력은 0.13493432 <0.13509969 <0.36816272 <0.54590815 <0.62678927로 정확합니다. – fuglede

+0

결과가 정확하다고 보이지만 무엇을 기대 했습니까? – MSeifert

+0

답변 해 주셔서 감사합니다. 그러나 나는 두 번째 명령이'[2, 4, 1, 3, 0]'을 반환 할 것으로 기대하고있었습니다. 0.6이 가장 크므로 그 번호와 연관된 숫자가 4 여야합니다. 내가 뭘 놓치고 있니? – govind

답변

0

당신이 np.argsort(x)x[i]가 정렬 된 순서 어디로 np.argsort(x)[i]가 배열되도록 반환하는 인상을 것처럼 보이는 그것을 테스트했습니다. 그것이 작동하는 방식이 아닙니다.

np.argsort(x)x[np.argsort(x)[i]]이 정렬 된 순서로 위치 i이되도록 배열을 반환합니다. 이 아닌 초,

np.sort(x) 

이것은 당신이 첫 번째 배열 예상 동작과 동일한 결과를 생성하는 일에

x[np.argsort(x)] 

가 동등 효과가있다.

관련 문제