1. 개요
데이터 전처리와 탐색 과정에서는 배열을 반복하거나 조건에 따라 선택하고 정렬하는 일이 자주 발생합니다. 이번 글에서는 이러한 작업을 손쉽게 도와주는 np.repeat
, np.unique
, np.sort
, np.argsort
, np.where
함수의 활용법을 실습 예제와 함께 소개합니다. 특히 axis
인자가 있는 함수는 행/열 각각의 적용 방법을 모두 다룹니다.
2. 내용
2-1. np.repeat
np.repeat
는 배열의 요소를 반복해서 늘려주는 함수입니다. 반복 횟수를 지정하거나 축(axis)을 설정하여 행 또는 열 방향으로 반복할 수 있습니다.
1차원 배열
import numpy as np
a = np.array([1, 2, 3])
print(np.repeat(a, 2))
[1 1 2 2 3 3]
2차원 배열 - axis=0 (행 반복)
b = np.array([[1, 2], [3, 4]])
print(np.repeat(b, 2, axis=0))
[[1 2]
[1 2]
[3 4]
[3 4]]
2차원 배열 - axis=1 (열 반복)
print(np.repeat(b, 2, axis=1))
[[1 1 2 2]
[3 3 4 4]]
2-2. np.unique
np.unique
는 배열에서 중복을 제거한 유일한 값들을 정렬된 형태로 반환합니다. 옵션을 통해 등장 횟수나 인덱스도 함께 구할 수 있습니다.
c = np.array([3, 1, 2, 3, 2])
u, counts = np.unique(c, return_counts=True)
print(u)
print(counts)
[1 2 3]
[1 2 2]
정렬된 고유값과 등장 횟수를 함께 활용하면 범주형 데이터 분석에도 활용 가능합니다.
2-3. np.sort
np.sort
는 배열을 오름차순으로 정렬합니다. axis
를 지정하여 행 또는 열 기준으로 정렬할 수 있습니다.
axis=0 (열 기준 정렬)
d = np.array([[4, 2], [1, 3]])
print(np.sort(d, axis=0))
[[1 2]
[4 3]]
axis=1 (행 기준 정렬)
print(np.sort(d, axis=1))
[[2 4]
[1 3]]
2-4. np.argsort
np.argsort
는 정렬된 결과의 인덱스를 반환합니다. 이를 통해 원래 배열을 간접적으로 정렬하거나 순위 정보를 추출할 수 있습니다.
axis=0
e = np.array([[8, 4], [2, 7]])
print(np.argsort(e, axis=0))
[[1 0]
[0 1]]
axis=1
print(np.argsort(e, axis=1))
[[1 0]
[0 1]]
2-5. np.where
np.where
는 조건에 따라 값을 선택하거나 조건을 만족하는 인덱스를 반환합니다. 매우 강력한 조건 분기 도구로 많이 사용됩니다.
조건에 따른 값 선택
x = np.array([1, 2, 3, 4])
print(np.where(x % 2 == 0, 'even', 'odd'))
['odd' 'even' 'odd' 'even']
조건에 해당하는 인덱스 반환
idx = np.where(x > 2)
print(idx)
(array([2, 3]),)
---
3. 결론
이번 글에서는 배열을 반복하고, 정렬하며, 조건에 따라 원하는 값을 추출할 수 있는 함수들을 실습해보았습니다. repeat
는 데이터 확장에, unique
는 중복 제거에, sort
와 argsort
는 정렬 및 순위 분석에 유용하며, where
는 조건 분기와 필터링의 핵심 도구입니다.
'Numpy' 카테고리의 다른 글
[Numpy] 논리 연산과 비교 함수 완전 정리 (np.all, np.any, np.isin, np.equal, np.logical_and) (0) | 2025.04.10 |
---|---|
[Numpy] 조건 인덱싱과 대각선 추출 함수 (np.nonzero, np.clip, np.trace, np.diag, np.count_nonzero ) (0) | 2025.04.10 |
[Numpy] 배열 분해와 반복생성 (np.vstack, np.vsplit, ...) (0) | 2025.04.08 |
[Numpy] 배열 변형과 결합 함수 (0) | 2025.04.08 |
[Numpy] 배열 초기화 및 변형 함수 (0) | 2025.04.08 |