Python/Numpy

[Python] 파이썬 numpy 행렬 결합 - hstack, vstack

나비🦋 2024. 4. 26. 17:24
반응형

안녕하세요! 나비입니다 🦋

이번 포스팅에서는 두 행렬을 하나로 결합할 수 있는 파이썬 numpy 메소드를 소개하려 합니다.

행렬 결합 메소드는 크게 수직(vertical)하게 결합하는 vstack 메소드와 수평(horizontal)으로 결합하는 hstack 으로 나뉩니다.

hstack는 여러 개의 행렬을 한 줄로 이어 붙이는 함수이고, vstack는 벽돌을 쌓듯이 위아래로 행렬을 결합하는 기능을 수행합니다.

말로만으로는 와닿지 않을 수 있으므로, 예시 코드를 보여드리면서 한 번 더 설명해보겠습니다.


np.hstack

import numpy as np

A = np.array([1,2,3])
B = np.array([2,3,4])
C = np.hstack((A, B))

print(C)
[1,2,3,2,3,4]

가장 기본적인 예시입니다. 크기가 같은 두 행벡터를 순서대로 이어붙였음을 확인할 수 있습니다.

이제 차원을 하나 더 늘려보겠습니다.

import numpy as np

A = np.array([[1,2,3],[4,5,6]])
B = np.array([[7,8,9],[10,11,12]])
C = np.hstack((A, B))

print(C)
[[1,2,3,7,8,9]
 [4,5,6,10,11,12]]

이 경우에는, 같은 위치에 있는 벡터끼리 결합한다는 것을 알 수 있습니다.

또한, hstack는 행의 개수가 같은 행렬, 벡터끼리만 사용할 수 있습니다. 행의 개수가 다르면 수평 결합을 할 수 없기 때문입니다. 열 개수는 상관없습니다.



np.vstack

vstack은 hstack 보다는 조금 더 간단한 원리로 작동합니다.
바로 예제를 보여드리겠습니다.

import numpy as np

A = np.array([1,2,3])
B = np.array([[4,5,6],[7,8,9]])
C = np.vstack((A, B))
print(C)
[[1,2,3]
 [4,5,6]
 [7,8,9]]

vstack은 hstack와 반대로, 열 개수가 동일한 행렬, 벡터끼리만 적용할 수 있습니다. 열 개수가 다르면 작동하지 않습니다. 행 개수는 상관없습니다.

반응형