[python]배열 값, 인덱스 정렬(sorted list of indices)

hjeun0111·2022년 9월 28일

개발을 하다 보면 정렬하는 일이 빈번하다.
배열의 값을 기준으로 정렬하는 것은 이미 내장된 함수가 많기 때문에, 쉽게 해결이 가능하다.

그러나, 배열 정렬 결과를 값으로 출력하는게 아니라.
배열의 인덱스로 결과를 출력 할 때 참고하고자 정리함

다른 언어로 테스트한 예제 포스팅 링크
(cpp) sorted list of indices 예제
(java) sorted list of indices 예제

1.python 내장 함수 사용

1.1 오름 차순 (배열 값 정렬, 배열 값의 인덱스 정렬 출력 예제)
ary = [102, 67, 35, 77, 153]

value = sorted(ary, reverse=False)
index = sorted(range(len(ary)), key=lambda k: ary[k], reverse=False)
print('value: ', value)
print('index: ', index)

---출력----
value:  [35, 67, 77, 102, 153]
index:  [2, 1, 3, 0, 4]
1.2 내림 차순 (배열 값 정렬, 배열 값의 인덱스 정렬 출력 예제)
ary = [102, 67, 35, 77, 153]

value = sorted(ary, reverse=True)
index = sorted(range(len(ary)), key=lambda k: ary[k],reverse=True)
print('value: ', value)
print('index: ', index)

---출력----
value:  [153, 102, 77, 67, 35]
index:  [4, 0, 3, 1, 2]

2.numpy 사용

2.1 오름 차순 (배열 값 정렬, 배열 값의 인덱스 정렬 출력 예제)
import numpy as np
ary = [102, 67, 35, 77, 153]

value = np.sort(ary)
index = np.argsort(ary)
print('value: ', value)
print('index: ', index)

---출력----
value:  [ 35  67  77 102 153]
index:  [2 1 3 0 4]
2.2 내림 차순 (배열 값 정렬, 배열 값의 인덱스 정렬 출력 예제)
import numpy as np
ary = [102, 67, 35, 77, 153]

np_s=np.array(ary)
value = -np.sort(-np_s)
index = np.argsort(-np_s)
print('value: ', value)
print('index: ', index)

---출력----
value:  [153 102  77  67  35]
index:  [4 0 3 1 2]

한번씩 잊을만 하면 필요한 애들임..

그럼, 이만!

다른 언어로 테스트한 예제 포스팅 링크
(cpp) sorted list of indices 예제
(java) sorted list of indices 예제

profile
I'm a software engineer

0개의 댓글