본문 바로가기
파이썬/통계분석

[파이썬 강의] 61. 배열을 행 방향(세로 방향)으로 합치기 (vstack 함수)

by 만다린망고 2021. 10. 22.
반응형

배열을 합치는데 사용되는 함수는 크게 두가지가 있습니다. stack 류 함수와 concatenate 함수입니다. 

1) stack 류 함수

  - vstack

  - hstack

  - column_stack

 

2) concatenate 함수

오늘은 stack류 함수를 이용하여 배열을 행 방향으로 합쳐보겠습니다. 배열을 행방향으로 합칠때는 vstack 함수를 사용합니다. vstack에서 v는 vertical 입니다. '세로'를 의미합니다. 

 

vstack : 배열을 행 방향으로 합치는 함수

배열을 행 방향으로 합친다는 것은 아래와 같이 합치는 것을 말합니다. 

[1,2,3]
+
[4,5,6]
=
[[1, 2, 3]
[4, 5, 6]]

 

1차원 배열 예시

>>> import numpy as np

>>> v1=np.array([1,2,3])
>>> v2=np.array([4,5,6])

>>> np.vstack((ar1,ar2))
array([[1, 2, 3],
       [4, 5, 6]])

 

2차원 배열 예시

>>> m1=np.array([[1,2],[3,4]])
>>> m2=np.array([[5,6],[7,8]])

>>> np.vstack((m1,m2))
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

 

3차원 배열 예시

>>> ar1=np.array([ [[1,2,3],[4,5,6]] , [[7,8,9],[10,11,12]] ])
>>> ar1
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 7,  8,  9],
        [10, 11, 12]]])
        
        
>>> ar2=np.array([ [[10,20,30],[40,50,60]] , [[70,80,90],[100,110,120]] ])
>>> ar2
array([[[ 10,  20,  30],
        [ 40,  50,  60]],

       [[ 70,  80,  90],
        [100, 110, 120]]])
        
        
>>> np.vstack((ar1,ar2))
array([[[  1,   2,   3],
        [  4,   5,   6]],

       [[  7,   8,   9],
        [ 10,  11,  12]],

       [[ 10,  20,  30],
        [ 40,  50,  60]],

       [[ 70,  80,  90],
        [100, 110, 120]]])


3차원 배열에 vstack 함수를 적용하니 행방향이 아니라 높이 방향으로 쌓입니다. 여기서 알 수 있는 것은 vstack이 shape 함수의 첫번째 값 방향으로 배열을 연결한다는 것입니다. 1차원 배열에서는 shape 함수 결과가 행이나 열을 나타내는 값이 아니라 단순히 원소의 수 이므로 예외로 합시다. 2차원 배열에서는 shape 함수 결과가 (행,열)입니다. 3차원 배열에서는 shape 함수 결과가 (층,행,열)입니다. 따라서 vstack 함수의 결과를 2차원 배열에서는 행방향 연결, 3차원 배열에서는 층방향 연결로 이해할 수 있습니다. 

반응형

댓글