본문 바로가기
🛠️Skill/Python

[Python] 정렬하는 방법 sort 와 reverse 이해하기

by Istj_eff 2022. 10. 27.

sort

넘파이에서 행렬정렬은 np.sort() 방식과 ndarray.sort()방식이 있다.

np.argsort()를 이용해서 원본 행렬의 인덱스가 정렬 후 변경된 인덱스를 반환

  • argsort()는 넘파이의 ndarray로만 가져와야한다. (df안됨)

 

✔️sort 기본예제

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

# np.sort로 정렬
sort_array1 = np.sort(org_array)
print('np.sort()호출 후 반환된 정렬행렬:',sort_array1)
print('np.sort()호출 후 반환된 원본행렬:', org_array)
## np.sort()호출 후 반환된 정렬행렬: [1 3 5 9]
## np.sort()호출 후 반환된 원본행렬: [3 1 9 5] # np.sort는 원본행렬은 변경안함

sort_array2 = org_array.sort()
print('org_array.sort()호출 후 반환된 행렬:', sort_array2)
print('org_array.sort()호출 후 원본 행렬:', org_array)
## org_array.sort()호출 후 반환된 행렬: None
## org_array.sort()호출 후 원본 행렬: [1 3 5 9] # ndarray.sort()는 원본자체를 정렬해서 반환


# 내림차순 정렬
sort_array1_desc = np.sort(org_array)[::-1]
print('내림차순으로 정렬:', sort_array1_desc)
## 내림차순으로 정렬: [9 5 3 1]
  • np.sort는 원본행렬은 변경을 안한다.
  • ndarray.sort( ) 는 원본자체를 정렬해서 반환한다.

 

✔️로우(row)방향 정렬, 컬럼 방향 정렬

array2 = np.array([[8,12],
                  [7,1]])

sort_array2_axis0 = np.sort(array2, axis=0)
print('로우방향으로 정렬:\\n', sort_array2_axis0)

# 로우방향으로 정렬:
#  [[ 7  1]
#   [ 8 12]]

sort_array2_axis1 = np.sort(array2, axis=1)
print('컬럼방향으로 정렬:\\n', sort_array2_axis1)

# 컬럼방향으로 정렬:
# [[ 8 12]
#  [ 1  7]]

 

 

sort와 reverse

sort( )는 기준에 따라 오름차순 또는 내림차순 정렬을 하는 것이고,

reverse( )는 단순히 리스트의 순서를 뒤집는 것입니다.

 

 

1. sort로 정렬하기

A = [5, 2, 8]
A.sort() # 원본을 정렬하고 수정

print('A:', A)
print('정렬후 A:', A)

[OUT]

A: [5, 2, 8]

정렬후 A: [2, 5, 8]

 

 

2. 역정렬하기

A = [5, 2, 8]
A.sort(reverse=True) # 역정렬하고 수정

print('A:', A)
print('역정렬후 A:', A)

[OUT]

A: [5, 2, 8]

역정렬후 A: [8, 5, 2]

 

 

3. 순서 뒤집기

A = [5, 2, 8]
A.reverse()

print('A:', A)
print('뒤집은 A:', A)

[OUT]

A: [5, 2, 8]

역정렬후 A: [8, 2, 5]

댓글