멀티캠퍼스 AI과정/03 Numpy
Numpy 09 - ndarray의 정렬
jhk828
2020. 9. 9. 03:27
ndarray 정렬
- Numpy array는 axis를 기준으로 정렬하는
sort()
함수 제공- 만약, axis를 지정하지 않으면 -1값으로 지정 => 마지막 axis
- np.sort() : 원본은 변하지 않고, 정렬된 결과 ndarray를 리턴
- arr.sort() : 원본을 정렬, return은 None
1) 1차원 ndarray 정렬
import numpy as np
arr = np.arange(10)
np.random.shuffle(arr)
print(np.sort(arr)) # 오름차순 정렬 (default)
# ndarray는 특수한 indexing 제공 => 역순으로 정렬하기 위한 index
print(np.sort(arr)[::1]) # 한칸씩 움직이기
# [0 1 2 3 4 5 6 7 8 9]
print(np.sort(arr)[::2])
# [0 2 4 6 8]
print(np.sort(arr)[::-1]) # 역 정렬
# [9 8 7 6 5 4 3 2 1 0]
2) 2차원 ndarray 정렬
arr = np.arange(1, 17)
np.random.shuffle(arr)
arr = arr.reshape(4, 4).copy()
print(arr)
# [[11 2 1 12]
# [13 10 15 4]
# [ 9 8 14 3]
# [16 6 5 7]]
# 2차원 axis=0 => 행/세로방향
print(np.sort(arr, axis=0))
# [[ 9 2 1 3]
# [11 6 5 4]
# [13 8 14 7]
# [16 10 15 12]]
# 2차원 axis=1 => 열/가로방향
print(np.sort(arr, axis=1))
# [[ 1 2 11 12]
# [ 4 10 13 15]
# [ 3 8 9 14]
# [ 5 6 7 16]]
연습문제
표준정규분포에서 200개의 샘플을 추출한 후, 내림차순으로 상위 5%까지의 결과만 출력
import numpy as np
arr = np.random.randn(200)
print(np.sort(arr)[::-1][1:11]) # 이게 맞나