티스토리 뷰

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]) # 이게 맞나
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함