반응형
NumPy 배열의 반복 및 타일링 (tile, repeat)
NumPy는 파이썬에서 과학 계산을 위해 널리 사용되는 라이브러리로, 고성능 다차원 배열 객체를 제공합니다. 오늘은 NumPy에서 배열을 반복하거나 타일링하여 데이터를 확장하는 데 사용되는 tile
과 repeat
함수에 대해 알아보겠습니다.
1. tile
함수란?
tile
함수는 배열을 지정된 패턴으로 반복하여 새로운 배열을 생성합니다. 타일링은 원래 배열을 마치 타일처럼 여러 번 복사하여 배치하는 방식입니다.
문법
numpy.tile(A, reps)
A
: 입력 배열reps
: 각 축(axis)별로 반복할 횟수를 지정한 정수 또는 정수의 튜플
예제 1: 1차원 배열 타일링
import numpy as np
arr = np.array([1, 2, 3])
result = np.tile(arr, 3)
print(result)
출력:
[1 2 3 1 2 3 1 2 3]
예제 2: 2차원 배열 타일링
arr_2d = np.array([[1, 2], [3, 4]])
result_2d = np.tile(arr_2d, (2, 3))
print(result_2d)
출력:
[[1 2 1 2 1 2]
[3 4 3 4 3 4]
[1 2 1 2 1 2]
[3 4 3 4 3 4]]
(2, 3)
은 배열을 세로로 2번, 가로로 3번 반복하도록 지정합니다.
2. repeat
함수란?
repeat
함수는 배열의 각 요소를 지정된 횟수만큼 반복하여 새로운 배열을 생성합니다. tile
과 달리 요소 단위의 반복에 초점이 맞춰져 있습니다.
문법
numpy.repeat(A, repeats, axis=None)
A
: 입력 배열repeats
: 각 요소를 반복할 횟수 (정수 또는 정수의 배열)axis
: 반복할 축 (기본값은None
으로, 플래튼(flatten)한 배열에서 반복)
예제 3: 1차원 배열 요소 반복
arr = np.array([1, 2, 3])
result = np.repeat(arr, 2)
print(result)
출력:
[1 1 2 2 3 3]
예제 4: 2차원 배열 요소 반복 (축 지정)
arr_2d = np.array([[1, 2], [3, 4]])
result_axis0 = np.repeat(arr_2d, 2, axis=0) # 행(axis=0) 반복
result_axis1 = np.repeat(arr_2d, 2, axis=1) # 열(axis=1) 반복
print("행 반복:")
print(result_axis0)
print("열 반복:")
print(result_axis1)
출력:
행 반복:
[[1 2]
[1 2]
[3 4]
[3 4]]
열 반복:
[[1 1 2 2]
[3 3 4 4]]
3. tile
과 repeat
의 차이점
- 기능적인 차이:
tile
은 전체 배열을 복사하여 배치하는 데 사용되고,repeat
는 개별 요소를 반복하는 데 사용됩니다. - 적용 범위:
tile
은 배열 구조를 유지하며 반복하지만,repeat
는 요소 단위로 반복하여 배열 구조를 변경할 수 있습니다.
비교 예제
arr = np.array([1, 2, 3])
tiled = np.tile(arr, 2)
repeated = np.repeat(arr, 2)
print("tile 결과:", tiled)
print("repeat 결과:", repeated)
출력:
tile 결과: [1 2 3 1 2 3]
repeat 결과: [1 1 2 2 3 3]
4. 응용 예제
예제 5: 데이터 확장에 활용
tile
과 repeat
은 데이터 전처리 시, 배열 크기를 늘리거나 데이터를 복제하는 데 유용합니다.
(1) 타일링으로 패턴 생성
pattern = np.array([0, 1])
tiled_pattern = np.tile(pattern, 5)
print(tiled_pattern)
출력:
[0 1 0 1 0 1 0 1 0 1]
(2) 반복으로 데이터 증폭
labels = np.array([1, 2, 3])
repeated_labels = np.repeat(labels, 3)
print(repeated_labels)
출력:
[1 1 1 2 2 2 3 3 3]
5. 주의할 점
메모리 사용:
tile
과repeat
은 입력 배열을 복사하여 새로운 배열을 생성하므로 메모리 사용량이 증가할 수 있습니다.- 큰 배열에 대해 높은 반복 횟수를 지정할 경우, 메모리 부족 문제가 발생할 수 있습니다.
반복 횟수의 유연성:
repeat
은 요소마다 다른 반복 횟수를 지정할 수 있습니다.- 예:
출력:arr = np.array([1, 2, 3]) result = np.repeat(arr, [1, 2, 3]) print(result)
[1 2 2 3 3 3]
6. 결론
NumPy의 tile
과 repeat
함수는 배열 데이터를 확장하거나 복제하는 데 매우 유용한 도구입니다. 두 함수는 비슷해 보이지만, 배열의 전체 복사와 요소 단위 복사라는 차이점을 이해하면 보다 효율적으로 사용할 수 있습니다. 데이터 전처리, 머신러닝 및 기타 배열 조작 작업에서 이 두 함수를 적절히 활용해 보세요!
반응형
'Python > NumPy' 카테고리의 다른 글
NumPy 배열의 연결과 분리 (concatenate, split) (0) | 2025.10.04 |
---|---|
NumPy 배열의 형태 변경: reshape, ravel, flatten (0) | 2025.10.03 |
NumPy 유니버설 함수 (Universal Functions, ufunc) 알아보기 (0) | 2025.10.02 |
NumPy 배열 브로드캐스팅 (Broadcasting) (0) | 2025.10.01 |
NumPy Array 기본 산술 연산 (0) | 2025.09.30 |