Numpy에서 지원하는 sorting method(or function)은
Numpy의 특성상 같은 데이터타입의 array이므로,
Python에서 제공하는 built-in function들보다 효율성이 높음.
copy based sorting
컴퓨팅 자원이 충분하다면, 개인적으로 아래와 같이 copy를 반환하는 게 가장 편하다.
import numpy as np
x = np.array([3,4,1,2,5,7,6])
y = np.sort(x) # return a sorted copy of x
print(y)
결과는 다음과 같음.
[1 2 3 4 5 6 7]
역순 정렬은 다음과 같이 처리
import numpy as np
x = np.array([3,4,1,2,5,7,6])
y = np.sort(x)[::-1]
print(y)
결과는 다음과 같음.
[7 6 5 4 3 2 1]
In-place sorting: view를 이용한
하지만, NumPy의 경우 큰 크기의 array를 다루어야 하므로
in-place 처리가 나을 수도 있음.
import numpy as np
x = np.array([3,4,1,2,5,7,6])
y = x.sort() # in-place sort. it returns None (y=None)
print(y)
여기서, y
는 None
이며, 실제 x
가 정렬이 됨.
[1 2 3 4 5 6 7]
역순정렬은 다음과 같음.
import numpy as np
x = np.array([3,4,1,2,5,7,6])
x[::-1].sort()
print(x)
결과는 다음과 같음.
[7 6 5 4 3 2 1]
index 관련 정렬
실제 sort의 결과를 index로 처리하도록 해주는 argsort
의 활용도 자주 있으므로 익혀두는게 좋음.
(argmax
처럼 index에 대한 처리임.)
import numpy as np
x = np.array([3,4,1,2,5,7,6])
idx = x.argsort() # it will be used by fancy indexing
print(idx)
idx
는 다음과 같이 정렬(sorting)이 x
의 index로 결과가 나옴. 인덱스가 2에서 가장 작은 값인 1을 가지므로, 2가 가장 앞에 위치함.
[2 3 0 1 4 6 5]
fancy indexing과 같이 sorting된 index의 array를 다음과 같이 사용됨.
print(x[idx])
결과는 다음과 같음.
[1 2 3 4 5 6]
역순으로 정렬하는 것은 다음과 같음.
import numpy as np
x = np.array([3,4,1,2,5,7,6])
y = np.argsort(x)[::-1]
print(y)
결과는 다음과 같음
[5 6 4 1 0 3 2]
같이보면 좋은 자료들
'Programming' 카테고리의 다른 글
[CE] Introduction of WSL (0) | 2022.12.22 |
---|---|
openCV : cv2.waitKey bug (1) | 2022.10.21 |
Paradigm (패러다임) (0) | 2022.07.21 |
[Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기. (2) | 2022.07.18 |
[ML] Summary SVM (0) | 2022.05.30 |