본문 바로가기
Python/데이터 분석

[Numpy] Numpy 배열의 정렬

by snow_white 2022. 4. 2.

정렬 함수

  • np.sort(ndarray)
  • ndarray.sort() 

 

  1. np 자체에 존재하는 정렬 함수 np.sort(ndarray), 배열을 정렬, 재대입 해주지 않으면 정렬이 유지되지 않음, 원본 유지, 반환값 있음, 원본 array에 재할당 해줘야 함
  2. ndarray를 파이썬 기본 ndarray.sort() 함수 사용, 배열 자체를 정렬하면서 동시에 원본 변경, 반환값 없음, 자동으로 array에 정렬되어 재할당

원본 데이터의 훼손을 방지하기 위해 반환값 있고, 없고, 원본에 바로 반영하고, 안 하고 나누어 사용

📍 np.sort(arr) 를 사용하여 원본을 훼손하지 않게끔 하는 방식 추천

arr3 = np.array([1, 10, 5, 8, 2, 4, 3, 8, 9, 10])

# 1. np의 기본 정렬 함수 사용, 재할당 해주지 않으면 정렬이 유지되지 않음
np.sort(arr3) # 반환값 있음, 원본 array에 재할당 해줘야 함
arr3 # array([ 1, 10,  5,  8,  2,  4,  3,  8,  9, 10])

arr3 = np.sort(arr3) # 재할당 해줌
arr3 # array([ 1,  2,  3,  4,  5,  8,  8,  9, 10, 10])

# 2. array에 바로 sort() 함수 사용함, np 자체 함수는 아니지만 배열 자체를 정렬하면서 동시에 원본 저장
arr3.sort() # 반환값 없음. 자동으로 array에 정렬되어 재할당
arr3 # array([ 1,  2,  3,  4,  5,  8,  8,  9, 10, 10])

 

⭐ N 차원 정렬

  1. 행을 기준으로 열 방향으로 정렬, axis=0
  2. 열을 기준으로 행 방향으로 정렬, axis=1 (default), 축(axis)을 수평으로 두어 정렬한다는 의미
arr2d = np.array([[5,6,7,8],
                 [4,3,2,1],
                 [10,9,12,11]])

arr2d.shape # (3, 4)
arr2d
'''
array([[ 5,  6,  7,  8],
       [ 4,  3,  2,  1],
       [10,  9, 12, 11]])
'''
# 행 방향으로 정렬
np.sort(arr2d, axis=1)
'''
array([[ 5,  6,  7,  8],
       [ 1,  2,  3,  4],
       [ 9, 10, 11, 12]])
'''
# 열 방향으로 정렬
np.sort(arr2d, axis=0)
'''
array([[ 4,  3,  2,  1],
       [ 5,  6,  7,  8],
       [10,  9, 12, 11]])
'''
행 방향 정렬 axis=1 (default)
np.sort(arr2d)
'''
array([[ 5,  6,  7,  8],
       [ 1,  2,  3,  4],
       [ 9, 10, 11, 12]])
'''

댓글