본문 바로가기
함수 설명/기본 및 범용

[NumPy] 배열 정렬 인덱스 구하기: np.argsort() 사용 및 설명

by First Adventure 2024. 10. 3.
반응형

소개

  np.argsort(a, axis=-1, kind=None, order=None)는 배열 a의 요소들을 지정한 축(axis)을 따라 정렬한 후, 그 정렬된 순서에 해당하는 인덱스를 반환하는 함수입니다. 정렬된 배열을 생성하는 것이 아니라, 배열을 정렬하는 데 필요한 인덱스를 반환하므로, 이 인덱스를 통해 원본 배열을 정렬된 상태로 재구성할 수 있습니다.

 

기본 사용법

import numpy as np

# 1차원 배열의 정렬된 순서의 인덱스 반환
array = np.array([3, 1, 2, 5, 4])
sorted_indices = np.argsort(array)

# 정렬된 순서대로 배열 재구성
sorted_array = array[sorted_indices]

print("정렬된 순서의 인덱스:", sorted_indices)
print("정렬된 배열:", sorted_array)

상세 설명

  • a: 정렬할 배열입니다. 다차원 배열도 허용되며, 배열의 각 요소를 정렬하는 데 필요한 인덱스를 반환합니다.
    • 예시: np.argsort([3, 1, 2])는 [1, 2, 0]을 반환합니다. 이를 통해 array[argsort]로 정렬된 배열 [1, 2, 3]을 얻을 수 있습니다.
  • axis (선택사항): 배열을 정렬할 축을 지정합니다. 기본값은 -1로, 마지막 축을 기준으로 인덱스를 반환합니다. axis=0은 열, axis=1은 행을 기준으로 인덱스를 반환합니다.
    • 예시: np.argsort(array2d, axis=0)은 각 열의 인덱스를 반환합니다.
  • kind (선택사항): 사용할 정렬 알고리즘을 지정합니다. quicksort, mergesort, heapsort 등의 옵션이 있으며, 기본값은 quicksort입니다.
    • 예시: np.argsort(array, kind='mergesort')는 병합 정렬 알고리즘을 사용합니다.
  • order (선택사항): 구조화된 배열에서 필드 이름을 지정하여 그 필드를 기준으로 정렬할 수 있습니다.
  • 활용
    • 데이터 분석 및 처리: 정렬된 배열을 얻지 않고도 배열 내에서 정렬 순서만 필요한 경우에 유용합니다. 이때 반환된 인덱스를 사용하여 정렬된 배열을 쉽게 생성할 수 있습니다.
    • 정렬 기반 연산: 배열에서 특정 조건에 맞는 데이터를 선택하거나, 정렬된 상태로 다른 연산을 수행할 때 인덱스만 필요할 경우 사용됩니다.

 

라이센스

  NumPy는 BSD-3-Clause 라이센스를 따릅니다. 자유롭게 사용, 수정, 배포할 수 있으며 상업적 목적으로도 사용할 수 있습니다. 라이센스와 저작권 정보는 NumPy의 공식 GitHub 리포지토리에서 확인할 수 있습니다.

 

관련 내용

  [NumPy] 배열 정렬 인덱스 구하기: np.argsort() 사용 및 설명

  [NumPy] 배열 정렬하기: np.sort() 사용 및 설명

  [NumPy] 배열의 중복 제거 및 고유 값 찾기: np.unique() 사용 및 설명

  [NumPy] 조건에 따른 배열 선택: np.where() 사용 및 설명

반응형