본문 바로가기
프로그래밍 ( Programming )/Python

[Python] numpy - hstack, vstack 함수

by Jayce_choi 2021. 1. 12.
반응형

이번 글에서는 Numpy의 hstack, vstack 메서드에 대해 적어보겠습니다.

둘의 기능은 우선 ndarray 형식의 배열을 결합할때 유용하게 사용되는 함수입니다. 

hstack에서 앞의 h는 Horizontal 즉 수평이라는 뜻으로 hstack을 사용하면 가로로 행렬 결합이 이뤄집니다. 반면 vstack의 v는 Vertical의 줄임말로 수직이라는 뜻을 가졌습니다. 때문에 vstack을 사용하면 수직으로 행렬 결합이 이뤄집니다.

파라미터는 hstack() 괄호 안에 합치고 싶은 행렬들을 넣으면 되는데 다만 주의해야할 점은 합쳐질 행렬들이 행이나 열의 개수가 일치가 되어야 합니다. 즉 vstack을 사용할 때는 반드시 요소의 (열) 개수가 일치해야 하며 배열의 행은 일치하지 않아도 됩니다. 그리고 hstack을 사용할 때는 반드시 요소들의 (행) 개수가 일치해야 하며 배열의 열 개수는 일치하지 않아도 가능합니다.

예시를 한번 보겠습니다. 

numpy.hstack((a,b)) 예시 

import numpy as np

a = np.arange(10).reshape(2,5)
b = np.arange(6).reshape(2,3)

print(a)
"""
[[0 1 2 3 4]
 [5 6 7 8 9]]
"""


print(b)
"""
[[0 1 2]
 [3 4 5]]
 """

 

우선 합칠 행렬 2개를 선언합니다. 2개의 행렬 특징은 현재 행의 개수가 동일하며 열의 개수는 다르기에 해당 행렬을 합치기 위해서는 vstack은 불가능하고 hstack만 가능합니다. 밑은 hstack의 결과입니다. 

import numpy as np

a = np.arange(10).reshape(2,5)
b = np.arange(6).reshape(2,3)

c = np.hstack((a,b))
print(c)
"""결과
[[0 1 2 3 4 0 1 2]
 [5 6 7 8 9 3 4 5]]
 """

 

numpy.vstack((a, b)) 예시

import numpy as np

a = np.arange(10).reshape(2,5)
b = np.arange(15).reshape(3,5)

print(a)
"""
[[0 1 2 3 4]
 [5 6 7 8 9]]
 """

print(b)
"""
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
 """

이번에는 vstack 예제입니다. 우선 a와 b 행렬을 선언하는데 둘의 열 개수는 동일합니다. 

import numpy as np

a = np.arange(10).reshape(2,5)
b = np.arange(15).reshape(3,5)

c = np.vstack((a,b))
print(c)
""" 결과
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
 """

그리고 둘의 행 개수가 같지 않으므로 hstack이 아닌 열개수가 동일하기 때문에 수직 결합을 수행하는 vstack을 통해서 다음과 같이 c 행렬을 생성할 수 있었습니다.

반응형

댓글