Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 NumPy 배열 정렬하기: sort() 함수 활용법 총정리

NumPy는 'Numerical Python'의 약자로, 다차원 배열 객체와 이를 효율적으로 처리할 수 있는 다양한 메서드를 제공하는 파이썬 라이브러리입니다. NumPy를 사용하면 배열에 대해 폭넓은 연산을 수행할 수 있으며, SciPy나 Matplotlib 같은 패키지와 함께 자주 활용됩니다. 특히 NumPy와 Matplotlib을 조합하면 MatLab의 대안으로 사용할 수 있을 만큼 강력합니다. NumPy는 오픈소스 패키지이기 때문에 누구나 자유롭게 사용할 수 있다는 장점도 있습니다.

NumPy의 핵심 객체, ndarray

NumPy 패키지에서 가장 중요한 객체는 n차원 배열을 의미하는 'ndarray'입니다. ndarray는 동일한 타입의 요소들로 구성된 집합을 정의하며, 배열 내부의 값은 0부터 시작하는 인덱싱을 통해 접근할 수 있습니다. ndarray의 모든 요소는 메모리 공간에서 동일한 크기의 블록을 차지하고, 각 요소의 데이터 타입은 'dtype' 함수를 통해 확인할 수 있습니다.

또한 배열 슬라이싱(array slicing)을 사용하면 ndarray에서 특정 항목을 추출할 수 있으며, 추출된 항목은 배열 스칼라(scalar) 타입의 객체로 표현됩니다.

NumPy의 정렬 함수

NumPy에는 다양한 정렬(sorting) 함수가 내장되어 있습니다. 각 함수는 실행 속도, 최악의 경우 성능(worst-case performance), 필요한 메모리 크기 등에 따라 차이가 있으며, 상황에 맞게 선택하여 사용할 수 있습니다.

그중 대표적인 'sort' 함수는 입력으로 전달된 배열의 정렬된 복사본을 반환합니다. 기본 문법은 다음과 같습니다.

numpy.sort(arr, axis, kind, order)
  • arr: 정렬할 대상 배열입니다.
  • axis: 배열을 정렬할 축(axis)을 지정합니다.
  • kind: 정렬 알고리즘의 종류를 의미하며, 기본값은 퀵소트(quicksort)입니다.
  • order: 배열에 여러 필드가 포함된 경우, 어떤 필드를 기준으로 정렬할지 지정합니다.

예제 코드

다음은 NumPy 배열에 sort() 함수를 적용하는 예제입니다.

import numpy as np
my_arr = np.array([[3,56],[19,100]])
print("원본 배열 :")
print(my_arr)
print("sort() 함수 호출 결과 :")
print(np.sort(my_arr))
print("축 0(axis=0) 기준 정렬 결과 :")
print(np.sort(my_arr, axis = 0))
dt = np.dtype([('Name', 'S6'),('Age', int)])
my_arr = np.array([("Will",20),("Jack",19),("Bob", 23)], dtype = dt)
print("원본 배열 :")
print(my_arr)
print("이름(Name) 기준 정렬 결과 :")
print(np.sort(my_arr, order = 'Name'))

실행 결과

원본 배열 :
[[ 3 56]
[ 19 100]]
sort() 함수 호출 결과 :
[[ 3 56]
[ 19 100]]
축 0(axis=0) 기준 정렬 결과 :
[[ 3 56]
[ 19 100]]
원본 배열 :
[(b'Will', 20) (b'Jack', 19) (b'Bob', 23)]
이름(Name) 기준 정렬 결과 :
[(b'Bob', 23) (b'Jack', 19) (b'Will', 20)]

코드 설명

  • 먼저 필요한 라이브러리(numpy)를 환경에 임포트합니다.
  • 2차원 ndarray를 생성한 뒤, 'sort' 함수를 호출하여 정렬하고 그 결과를 출력합니다.
  • 이어서 axis=0(열 방향)을 기준으로 다시 정렬하여 결과를 콘솔에 출력합니다.
  • 다음으로 이름과 나이를 담은 구조화된 배열(structured array)을 dtype과 함께 생성합니다.
  • 'order' 매개변수에 'Name'을 지정해 이름을 기준으로 배열을 정렬하고, 결과를 콘솔에 출력합니다.

이처럼 NumPy의 sort() 함수를 활용하면 단순 숫자 배열은 물론, 여러 필드로 구성된 구조화된 배열까지 원하는 기준에 따라 손쉽게 정렬할 수 있습니다.