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

[파이썬 강의] 62. 배열을 열 방향(가로 방향)으로 합치기 (hstack 함수)

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

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

1) stack 류 함수
  - vstack
  - hstack
  - column_stack
 
2) concatenate 함수

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

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

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

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

 

1차원 배열 예시

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

 

2차원 배열 예시

>> m1=np.array([[1,2],[3,4]])
>>> m2=np.array([[5,6],[7,8]])
>>> np.hstack((m1,m2))
array([[1, 2, 5, 6],
       [3, 4, 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.hstack((ar1,ar2))
array([[[  1,   2,   3],
        [  4,   5,   6],
        [ 10,  20,  30],
        [ 40,  50,  60]],

       [[  7,   8,   9],
        [ 10,  11,  12],
        [ 70,  80,  90],
        [100, 110, 120]]])


2차원 배열까지는 열방향(가로방향)으로 연결된 것을 알 수 있습니다. 하지만 이 성질이 3차원 배열에서는 유지되지 않는 것 같아 보입니다. 이유는 hstack 연결의 본질이 '열방향'에 있지 않기 때문입니다. 1차원 배열과 2차원 배열에서 열방향으로 연결된 것은 '현상'입니다. 다른 원리가 적용되었고, 그 원리의 결과 열방향 연결로 나타난 것입니다. hstack 함수의 본질은 shape에서 두번째 값을 기준으로 연결한다는데 있습니다. 

1차원 배열에서는 shape 함수 결과가 행이나 열을 나타내는 값이 아니라 단순히 원소의 수 이므로 예외로 합시다. 2차원 배열에 shape 함수를 적용하면 나타나는 결과는 (행,열)입니다. 두번째 값인 열방향으로 연결합니다. 반면 3차원 배열의 shape 함수 결과는 (층,행,열)입니다. 따라서 두번째 값인 행방향으로 연결하게 됩니다. 

반응형

댓글