배열을 합치는데 사용되는 함수는 크게 두가지가 있습니다. 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 함수 결과는 (층,행,열)입니다. 따라서 두번째 값인 행방향으로 연결하게 됩니다.
'파이썬 > 통계분석' 카테고리의 다른 글
[파이썬 강의] 64. 배열을 원하는 방향으로 합치기 (concatenate 함수와 axis) (0) | 2021.10.22 |
---|---|
[파이썬 강의] 63. 벡터를 열벡터로 연결 (column_stack 함수) (0) | 2021.10.22 |
[파이썬 강의] 61. 배열을 행 방향(세로 방향)으로 합치기 (vstack 함수) (0) | 2021.10.22 |
[파이썬 강의] 60. 주피터 노트북 경로 드라이브 변경하기 (0) | 2021.10.22 |
[파이썬 강의] 59. 주피터 노트북 크롬에서 실행하기 (0) | 2021.10.22 |
댓글