Python 넘파이 배열 결합 vstack hstack 예제

NumPy ndarray 형식의 배열을 결합하는 방법을 알아보겠습니다.

결합을 하기 위해서는 vstack와 hstack을 사용합니다.

그럼 사용 방법에 대해 알아보겠습니다.

 

샘플 데이터

import numpy as np

# 배열 준비
a = np.arange(10).reshape(2,5)
b = np.arange(15).reshape(3,5)
c = np.arange(8).reshape(2,4)
d = list(range(5))

# 배열 확인용
print("a")
print(a)
print("b")
print(b)
print("c")
print(c)
print("d")
print(d)

 

결과

a
[[0 1 2 3 4]
 [5 6 7 8 9]]

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

c
[[0 1 2 3]
 [4 5 6 7]]

d
[0, 1, 2, 3, 4]

  

vstack

배열을 세로로 결합할 때 vstack를 사용합니다.

세로 결합 예제

import numpy as np

# 배열 준비
a = np.arange(10).reshape(2,5)
b = np.arange(15).reshape(3,5)
c = np.arange(8).reshape(2,4)
d = list(range(5))

e = np.vstack((a,b)) # 배열과 배열 결합
f = np.vstack((a,d)) # 배열과 리스트 결합
g = np.vstack((a,b,d)) # 3개 이상 배열 결합

print("e = np.vstack((a,b))")
print(e)
print("\nf = np.vstack((a,d))")
print(f)
print("\ng = np.vstack((a,b,d))")
print(g)

 

결과

e = np.vstack((a,b))

[[ 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]]

f = np.vstack((a,d))

[[0 1 2 3 4]

[5 6 7 8 9]

[0 1 2 3 4]]

g = np.vstack((a,b,d))

[[ 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]

[ 0 1 2 3 4]]

 

세로로 결합되었습니다.

vstack 사용할 때 주의점으로는 요소(열) 개수가 일치해야 합니다.

일치하지 않으면 결합이 안됩니다.

배열의 행은 일치하지 않아도 상관없습니다.

예제에서 볼수 있듯이 배열과 리스트도 결합이 가능합니다.

 

hstack

배열을 가로로 결합하고 싶을 때 hstack를 사용합니다.

가로 결합 예제

import numpy as np

# 배열 준비
a = np.arange(10).reshape(2,5)
b = np.arange(15).reshape(3,5)
c = np.arange(8).reshape(2,4)
d = list(range(5))

h = np.hstack((a,c))

print("h = np.hstack((a,c))")
print(h)

 

결과

h = np.hstack((a,c))

[[0 1 2 3 4 0 1 2 3]

[5 6 7 8 9 4 5 6 7]]

 

가로로 결합하는 hstack을 사용하는 경우에는 배열 행이 일치해야 합니다.

요소 개수인 열을 일치하지 않아도 됩니다.

변수 a와 c는 행이 2줄씩이기 때문에 가로로 결합이 가능합니다.

하지만 변수 a와 b를 hstack 사용해서 가로로 결합하려고 하면 에러가 발생합니다.

 

정리

넘파이 배열을 가로 또는 세로로 결합하는 방법을 알아봤습니다.

특별히 어려운것은 없지만 사용하는 함수에 따라 행이나 열수를 맞춰야합니다.

댓글