본문 바로가기
파이썬

파이썬 인덱스 배열을 기반으로 배열을 재정렬하는 방법

by º기록 2020. 12. 6.
반응형

다음을 수행하는 데 도움이 될 한 줄 솔루션을 찾고 있습니다.

내가 가지고 있다고 가정

array = np.array([10, 20, 30, 40, 50])

입력 순서에 따라 재정렬하고 싶습니다. arrange 라는 numpy 함수가 있으면 다음을 수행합니다.

newarray = np.arrange(array, [1, 0, 3, 4, 2])
print newarray

    [20, 10, 40, 50, 30]

공식적으로 재정렬 할 배열이 m x n이고 "인덱스"배열이 1 x n 인 경우 순서는 "인덱스"라는 배열에 의해 결정됩니다.

numpy에는 이와 같은 기능이 있습니까?

 

해결 방법

 

"인덱스"목록을 직접 사용할 수도 있고 인덱스 배열도 사용할 수 있습니다.

>>> arr = np.array([10, 20, 30, 40, 50])
>>> idx = [1, 0, 3, 4, 2]
>>> arr[idx]
array([20, 10, 40, 50, 30])

idx 가 이미 ndarray 이고 list 가 아닌 경우 어느 쪽이든 작동하더라도 훨씬 더 빠른 경향이 있습니다.

>>> %timeit arr[idx]
100000 loops, best of 3: 2.11 µs per loop
>>> ai = np.array(idx)
>>> %timeit arr[ai]
1000000 loops, best of 3: 296 ns per loop

 

참조 페이지 https://stackoverflow.com/questions/26194389

 

 

반응형

댓글