728x90
반응형
이번 포스팅에서는 Python에서 Numpy Array (배열)에 대해서 정렬을 배워보도록 하겠습니다.
import numpy as np
가장 먼저 numpy 패키지는 import 하였습니다.
def selection_sort(x):
for i in range(len(x)):
swap = i + np.argmin(x[i:])
(x[i], x[swap]) = (x[swap], x[i])
return x
우리는 기본적으로 선택 정렬 알고리즘을 Hard Coding하여 구현할 수 있습니다.
x = np.array([3,9,7,2,6])
selection_sort(x)
array([2, 3, 6, 7, 9])
실제로 실행 결과를 보시면, Input으로 들어간 배열이 정렬되어 나타나는 것을 확인할 수 있습니다.
하지만 선택 정렬을 배워본 사람은 알테지만, 해당 알고리즘은 O(N)의 계산 과정을 가지기 때문에, 배열의 길이가 매우 클 경우에는 적합한 방법은 아니다.
Numpy 패키지에서는 자체적으로 Sorting 함수를 제공한다. 이 때, 기본적인 알고리즘은 퀵 정렬을 사용한다.
np.sort(x)
array([2, 3, 6, 7, 9])
이 처럼 np.sort 함수 안에 정렬하고자 하는 배열을 넣어주면, 원하는 결과가 출력되는 것을 확인할 수 있다.
x.sort()
x
array([2, 3, 6, 7, 9])
x 자체에 sort 함수를 사용해주면, 정렬된 결과가 x에 저장된다.
지금까지는 1차원 배열에 대해서 정렬을 배워보았습니다.
그렇다면 2차원 이상의 배열에 대해서는 어떻게 정렬을 할까요??
rand = np.random.RandomState(42)
X = rand.randint(0, 10, (4,6))
print(X)
[[6 3 7 4 6 9]
[2 6 7 4 3 7]
[7 2 5 4 1 7]
[5 1 4 0 9 5]]
(4,6)의 사이즈를 가지는 랜덤한 배열을 생성하였습니다.
np.sort(X, axis = 0)
array([[2, 1, 4, 0, 1, 5],
[5, 2, 5, 4, 3, 7],
[6, 3, 7, 4, 6, 7],
[7, 6, 7, 4, 9, 9]])
np.sort에 axis 파라미터를 활용하면, 특정 축을 기준으로 정렬을 할 수 있습니다.
axis = 0 인 경우 세로축을 기준으로 정렬이 됩니다.
np.sort(X, axis = 1)
array([[3, 4, 6, 6, 7, 9],
[2, 3, 4, 6, 7, 7],
[1, 2, 4, 5, 7, 7],
[0, 1, 4, 5, 5, 9]])
반면에 axis = 1 의 파라미터를 주면 가로축을 기준으로 정렬이 됩니다.
반응형
'데이터 다루기 > Python' 카테고리의 다른 글
[Python] Pandas Series 객체 (1) | 2023.05.30 |
---|---|
[Python] Array 합치기 (0) | 2023.03.27 |
[Python] Array 만들기 (0) | 2023.03.16 |
[Python] Numpy란? (0) | 2023.03.15 |
[Python] 에러 및 디버깅 (0) | 2023.02.15 |