반응형
이번 글에서는 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 행렬을 생성할 수 있었습니다.
반응형
'프로그래밍 ( Programming ) > Python' 카테고리의 다른 글
[Python] Class 이해하기 (0) | 2021.11.25 |
---|---|
[Python] 모듈(Module)과 패키지(Package) 의미 정리 (0) | 2021.11.24 |
[Python] numpy.reshape의 -1 의미 및 기능 (0) | 2021.01.12 |
[Python] numpy.meshgrid란 (0) | 2021.01.11 |
[Python] rand와 randn 차이 (0) | 2021.01.11 |
댓글