Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total



GitHub Contribution
Loading data ...
관리 메뉴

초보 개발자의 일기

NumPy - ndarray의 정렬 본문

소소한 공부 일기/데이터 분석

NumPy - ndarray의 정렬

Da다 2021. 5. 5. 17:21

행렬을 정렬하는 방법이다.

sort()

org_array = np.array([ 3, 1, 9, 5,7])	# 예시 원본행렬 생성
print('원본 행렬:', org_array)
원본 행렬: [3 1 9 5 7]

행렬을 오름차순으로 정렬할 때

np.sort()로 정렬할 경우 객체 자체(원본행렬)는 변경되지 않는다.

sort_array1 = np.sort(org_array)

print ('np.sort( ) 호출 후 반환된 정렬 행렬:', sort_array1) 
print('np.sort( ) 호출 후 원본 행렬:', org_array)

 

np.sort( ) 호출 후 반환된 정렬 행렬: [1 3 5 7 9]
np.sort( ) 호출 후 원본 행렬: [3 1 9 5 7]

ndarray.sort()로 정렬할 경우 객체 자체(org_array)를 변경한다.

sort_array2 = org_array.sort()

print('org_array.sort( ) 호출 후 반환된 행렬:', sort_array2)	# 원본을 변경하기 때문에 반환값이 없어 None 출력
print('org_array.sort( ) 호출 후 원본 행렬:', org_array)
org_array.sort( ) 호출 후 반환된 행렬: None
org_array.sort( ) 호출 후 원본 행렬: [1 3 5 7 9]

행렬을 내림차순으로 정렬할 때

np.sort()로 내림차순 정렬할 경우에도 객체 자체(원본행렬)는 변경되지 않는다.

sort_array1_desc = np.sort(org_array)[::-1]
print ('내림차순으로 정렬:', sort_array1_desc) 
내림차순으로 정렬: [9 7 5 3 1]

ndarray.sort()로 내림차순 정렬할 경우에는 오름차순과 마찬가지로 객체 자체(원본행렬)를 변경한다.

sort_array2_desc = org_array[::-1].sort()
print('내림차순으로 정렬', sort_array2_desc)	# 원본을 변경하기 때문에 반환값이 없어 None 출력
print('내림차순으로 정렬',org_array)
내림차순으로 정렬 None
내림차순으로 정렬 [9 7 5 3 1]

2차원 행렬 정렬

array2d = np.array([[8, 12],	# 예시용 행렬 생성
                    [7, 1 ]])
array2d
array([[ 8, 12],
          [ 7, 1]])

Row 방향으로 정렬할 때

'axis = 0'은 '행'을 기준으로 한다.

sort_array2d_axis0 = np.sort(array2d, axis=0)
print('로우 방향으로 정렬:\n', sort_array2d_axis0)
로우 방향으로 정렬:
[[ 7 1]
[ 8 12]]

Column 방향으로 정렬할 때

axis = 1은 '열'을 기준으로 한다.

sort_array2d_axis1 = np.sort(array2d, axis=1)
print('컬럼 방향으로 정렬:\n', sort_array2d_axis1)
컬럼 방향으로 정렬:
[[ 8 12]
[ 1 7]]

argsort()

array내의 요소를 정렬하고 난 후의 인덱스를 보여준다.

org_array = np.array([ 3, 1, 9, 5])    # 원본행렬 생성
print(np.sort(org_array))

오름차순으로 정렬할 때 

오름차순, 내림차순 설정하지 않을 시 오름차순을 기본으로 출력한다.

sort_indices = np.argsort(org_array)

print(type(sort_indices))
print('행렬 정렬 시 원본 행렬의 인덱스:', sort_indices)
print(org_array)
<class 'numpy.ndarray'> 
행렬 정렬 시 원본 행렬의 인덱스: [1 0 3 2]
[3 1 9 5]

내림차순으로 정렬할 때

sort_indices_desc = np.argsort(org_array)[::-1]

print(type(sort_indices))
print('행렬 내림차순 정렬 시 원본 행렬의 인덱스:', sort_indices_desc)
print(org_array)
<class 'numpy.ndarray'>
행렬 내림차순 정렬 시 원본 행렬의 인덱스: [2 3 0 1]
[3 1 9 5]

argsort() 사용예시

Q. key-value 형태의 데이터 John=78, Mike=95, Sarah=84, Kate=98, Samuel=88 를 ndarray로 만들고 argsort()를 이용하여 key값을 정렬하여라.
name_array = np.array(['John', 'Mike', 'Sarah', 'Kate', 'Samuel'])
score_array = np.array([78, 95, 84, 98, 88])

score_array의 정렬된 값에 해당하는 원본 행렬의 위치 인덱스를 반환, 이를 이용하여 name값을 추출한다.

sort_indices = np.argsort(score_array)
print("sort indices:", sort_indices)
sort indices: [0 2 4 1 3]
name_array_sort = name_array[sort_indices]
score_array_sort = score_array[sort_indices]

print(name_array_sort)
print(score_array_sort)
['John' 'Sarah' 'Samuel' 'Mike' 'Kate']
[78 84 88 95 98]

 

 

※ 이지북스의 파이썬 머신러닝 완벽 가이드를 바탕으로 한 학습 기록입니다 ※

'소소한 공부 일기 > 데이터 분석' 카테고리의 다른 글

Pandas - Object creation  (0) 2021.05.05
NumPy - 선형대수 연산  (0) 2021.05.05
NumPy - ndarray의 데이터 세트 선택하기  (0) 2021.05.04
NumPy - ndarray 생성, reshape()  (0) 2021.05.04
NumPy - ndarray 개요  (0) 2021.05.03
Comments