본문 바로가기
Numpy

[Numpy] 배열 변형과 결합 함수

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

1. 개요

데이터를 다룰 때 가장 많이 수행하는 작업 중 하나는 배열의 형태를 바꾸거나 결합하는 것입니다. NumPy는 이러한 작업을 빠르고 간단하게 처리할 수 있는 다양한 함수를 제공합니다. 이번 글에서는 배열의 차원을 바꾸는 np.transpose, np.swapaxes, 그리고 배열을 결합하는 np.concatenate, np.stack, np.hstack 함수에 대해 알아보겠습니다.

2. 내용

2-1. np.transpose

np.transpose는 배열의 축을 바꿉니다. 특히 2차원 배열에서는 행과 열을 뒤바꾸는 데 사용되며, 선형대수나 이미지 데이터 처리에 매우 유용합니다.

import numpy as np
a = np.array([[1, 2], [3, 4]])
t = np.transpose(a)
print(t)
[[1 3]
 [2 4]]

다차원 배열에서는 axes 인자를 통해 특정 축의 순서를 지정할 수도 있습니다.

2-2. np.swapaxes

np.swapaxes는 지정한 두 축의 위치를 서로 바꿉니다. transpose보다 명확하게 두 축만 교환할 때 사용하기 좋습니다.

arr = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
swapped = np.swapaxes(arr, 0, 2)
print(swapped.shape)
(2, 2, 2)

복잡한 다차원 배열의 축을 조절할 때 깔끔한 대안이 됩니다.

2-3. np.concatenate

np.concatenate는 여러 배열을 하나로 이어 붙이는 함수입니다. 축(axis)을 지정하여 가로 또는 세로 방향으로 결합할 수 있습니다.

x = np.array([[1, 2]])
y = np.array([[3, 4]])
c = np.concatenate((x, y), axis=0)
print(c)
[[1 2]
 [3 4]]

축의 방향에 따라 결과가 달라지므로, 원하는 형태로 조정하여 결합하는 것이 중요합니다.

2-4. np.stack

np.stack은 여러 배열을 새로운 축을 기준으로 쌓아줍니다. 기존 배열보다 차원이 하나 증가하며, 딥러닝에서 배치(batch) 차원 추가 시 유용합니다.

a = np.array([1, 2])
b = np.array([3, 4])
s = np.stack((a, b))
print(s)
[[1 2]
 [3 4]]

axis 파라미터로 축 방향을 조절할 수 있으며, concatenate보다 명시적으로 차원을 조절할 수 있다는 장점이 있습니다.

2-5. np.hstack

np.hstack은 수평 방향으로 배열을 쌓는 함수입니다. 1차원 배열을 연결하거나, 2차원 배열을 옆으로 나란히 붙일 때 자주 사용됩니다.

x = np.array([1, 2])
y = np.array([3, 4])
h = np.hstack((x, y))
print(h)
[1 2 3 4]

단순하고 직관적인 결합 방법으로, 빠르게 데이터를 이어 붙일 수 있습니다.

3. 결론

이번 글에서는 NumPy에서 배열의 축을 변형하거나 결합하는 데 자주 사용되는 함수들을 살펴보았습니다. transposeswapaxes는 배열 구조를 바꾸는 데, concatenate, stack, hstack은 배열을 결합하는 데 필수적인 도구입니다. 데이터 전처리부터 딥러닝 모델의 입력 구성까지 폭넓게 활용되므로, 이들 함수의 차이를 잘 이해하고 적절히 사용하는 것이 중요합니다.