본문 바로가기
Data Science

[Numpy] argsort 넘파이 정렬 내림차순까지 간단히 정리

by Lora Baek 2022. 8. 5.
300x250

넘파이 기초 개념과 핸들링은 오늘 포스팅으로 끝내고, 판다스에 대해서도 차근차근 정리해볼 예정이다!

마지막으로 알아볼 내용은 넘파이 행렬 정렬 방법이다.

 

Numpy np.sort ndarray.sort

먼저 np.sort(배열명) 는 원래의 데이터는 그대로 유지한 채로 정렬된 행렬을 반환하고,

배열명.sort()는 행렬 자체를 정렬해서 변환하는 것이다. 반환되는 값은 None이라는 점!

해당 예제를 보면 3,1,9,5라는 array1이라는 배열이 있는데 

np.sort(배열명) 식으로 하면 array1은 그대로지만 정렬된 행렬을 반환할 수 있다.

하지만 배열명.sort() 방식을 이용하면 반환된 값은 없지만 , array1이 정렬이 되어있음을 확인할 수 있다.

 

위의 방식은 default값인 오름차순으로 정렬된 것인데, 내림차순은 np.sort()[::-1] 으로 설정할 수 있다. 

다시 오름차순으로 변경하려면 [::1] 로 설정할 수도 있다.

넘파이 2차원 배열 정렬

지난 포스팅에서 언급했듯이 2차원 배열에서는 행은 axis0, 열은 axis1이 진짜 이름이다. (아래의 링크 참조)

2차원 배열을 정렬하려면 axis0 방향으로 정렬할지, axis1 방향으로 정렬할지 결정해서 옵션을 넣어주면 된다.

axis 0을 기준으로 정렬하면, 세로로 보았을 때 작은 값부터 정렬되었음을 볼 수 있다.

axis 1은 가로로 보았을 때 작은 값부터 정렬되어있다.

 

axis=0을 오름차순 혹은 내림차순 정렬을 하는 방법은 동일하게 np.sort(배열, 기준축)[::-1] 과 같이 입력하면 된다.

 

numpy argsort 내림차순

이렇게 정렬된 행렬의 인덱스 구하기는 어떻게 하면 좋을까?

np.argsort를 이용하면 간단하게 구할 수 있다.

위에서 정리한 방법과 같이 오름차순으로도, 내림차순으로도 구할 수 있다.

argsort는 굉장히 유용하다.

판다스와 달리 넘파이에서는 실제 값과 그 값이 뜻하는 데이터를 별도의 ndarray로 각각 가져야 하는데, 물건 이름과 가격을 표현하려면 각각의 ndarray로 활용할 수밖에 없다. 이때 np.argsort(price_array)를 이용해 인덱스를 반환하고, 이를 name_array에 팬시 인덱스로 적용시켜 추출할 수 있기 때문에 데이터 추출에 굉장히 유용하다.

np.argsort(배열명)[::-1] 로 내림차순으로 정렬하는 것도 역시 가능하다.

 

 

넘파이 행렬 내적(행렬곱)과 전치 행렬

우선 넘파이에서 간단하게 계산할 수 있는 명령어는 다음과 같다.

행렬 내적은 np.dot(행렬1,행렬2)로 간단히 계산할 수 있고,

전치 행렬은 np.transpose(행렬1)로 계산할 수 있다.

 

이론적인 부분에 대해서 이야기하면 너무 길어지기 때문에, 선형대수에 대해서 꼼꼼하게 공부하면서 다시 정리해볼 예정이다 :)

 

차근차근 넘파이 개념 정리하기

2022.08.02 - [Data Science] - [Numpy] 넘파이 설치+차원 확인+데이터 타입 확인 및 변경

2022.08.02 - [Data Science] - [Numpy] 넘파이 배열 생성 arange range 차이+파이썬 빈 배열 만들기

2022.08.03 - [Data Science] - [Numpy] 넘파이 reshape 차원 추가 축소 변경하기

2022.08.04 - [Data Science] - [Numpy] 넘파이 인덱싱 슬라이싱 팬시인덱싱 등으로 인덱스 반환하기 +찾기

댓글