본문 바로가기
Numpy

[Numpy] 배열 반복과 조건/정렬 함수 (np.repeat, np.unique, ...)

by PredictLab | 데이터 예측 연구소 2025. 4. 8.

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는 중복 제거에, sortargsort는 정렬 및 순위 분석에 유용하며, where는 조건 분기와 필터링의 핵심 도구입니다.