안 쓰던 블로그

Numpy argsort()로 key-value 형태 데이터 정렬하기 본문

머신러닝/머신러닝

Numpy argsort()로 key-value 형태 데이터 정렬하기

proqk 2020. 11. 11. 17:27
반응형

A=60, B=87, C=72, D=96, E=84 라는 값을 정렬하고자 한다

정보를 두 개의 array에 이렇게 담았다

두 array는 지금 암묵적으로 연결되어 있는 상태이다

score를 기준으로 정렬을 했을 때 name도 같이 정려되게 하려면 어떻게 해야 할까?

 

Numpy의 argsort()를 이용하면 쉽게 할 수 있다

argsort()는 원본 행렬 정렬 시 정렬된 행렬의 원래 인덱스를 필요로 할 때 사용한다

이것을 이용하면 정렬 행렬의 원본 행렬 인덱스를 ndarray 형으로 반환해 준다

 

예를 들어보자

원본 행렬 인덱스가 0 1 2 3

원본 행렬 A가 3, 1, 9, 5 일 때

 

정렬 행렬은 1, 3, 5, 9

정렬된 행렬의 원본 행렬 인덱스는 1, 0, 3, 2 이다

argsort()는 1, 0, 3, 2를 ndarray 형으로 반환한다

 

아까 상태에서도 마찬가지로, score_array를 정렬하면 정렬된 인덱스는 0 2 4 1 3 이다

이제 사람 이름과 스코어를 정렬된 인덱스를 가지고 새로운 array를 만들어서 넣으면 된다

 

정렬이 완료되었다

 

전체 코드

name_array=np.array(['A', 'B', 'C', 'D', 'E'])
score_array=np.array([60, 87, 72, 96, 84])

sort_indices = np.argsort(score_array)
print("sort indices:", sort_indices)

name_array_sort = name_array[sort_indices]
score_array_sort = score_array[sort_indices]
print(name_array_sort)
print(score_array_sort)

 

반응형
Comments