NumPy sort 와 argsort
10 Jul 2025 | DA개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
np.sort 와 np.argsort
- np.sort(배열명): 원본 데이터 유지한 채 정렬된 행렬 반환
- np.sort(): 행렬 자체를 정렬해서 반환 > 반환되는 값은 None
- np.argsort(): 정렬된 행렬의 인덱스를 반환
우선 np.sort(배열명)과 np.sort()의 차이를 먼저 보자.
arr1 = np.array([3,1,7,5])
# [3,1,7,5]
arr_sort1 = np.sort(arr1)
# [1,3,5,7]
arr1
# [3,1,7,5]
arr1 = np.array([3,1,7,5])
# [3,1,7,5]
arr_sort2 = arr1.sort()
# None
arr1
# [1,3,5,7]
이처럼 np.sort(배열명)의 경우에는 복사한 값에 새롭게 정렬된 배열이 할당되지만(arr_sort1) 기존 arr1의 배열에는 아무런 변화가 없음을 알 수 있다. 그러나 np.sort()의 경우에는 기존 arr1의 값이 변하는 것을 볼 수 있다. 다만 arr_sort2에서 반환되는 값은 None
이다.
내림차순 하는 방법은 아래와 같다.
arr_re_sort = np.sort(arr1)[::-1]
# [7,5,3,1]
그러면 argsort()는 어떻게 쓸까?
arr1 = np.argsort([3,1,7,5])
arr1
# > ([1, 0, 3, 2])
이렇듯 정렬된 값의 기존 인덱스 값을 배열에 반환하는 것을 볼 수 있다.
arr1 = np.argsort([3,1,7,5])
#[1,3,5,7] 로 소팅된 후 기존 [3,1,7,5]일때의 인덱스 값을 반환
arr1
# > ([1, 0, 3, 2])
그렇다면 이것도 내림차순이 가능할까? 가능함!
arr1 = np.argsort([3,1,7,5])[::-1]
# [7,5,3,1]로 역순 소팅 후 기존 [3,1,7,5]일때의 인덱스 값 반환
arr1
# > ([2, 3, 0, 1])