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

[파이썬 강의] 57. 3차원 배열의 모양에 대한 고찰

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

3차원 배열에 shape 메소드를 사용해보고 결과에 대한 고찰을 해보려고 합니다. 

2차원 배열에서 shape 결과는 행과 열의 개수 였습니다.

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


3차원 배열을 하나 정의해봅시다. 

>>> ar3=np.array([ [[1,2,3,4],[5,6,7,8],[9,10,11,12]] , [[13,14,15,16],[17,18,19,20],[21,22,23,24]] ] )
>>> ar3
array([[[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12]],

       [[13, 14, 15, 16],
        [17, 18, 19, 20],
        [21, 22, 23, 24]]])


1층에 아래 행렬이

1 2 3 4
5 6 7 8
9 10 11 12

2층에 아래 행렬이

13 14 15 16
17 18 19 20
21 22 23 24

정의되도록 하였습니다. 

shep 메소드를 적용해봅시다. 

>>> ar3.shape
(2, 3, 4)


(행,열,층) 으로 나오면 좋겠는데 (층,행,열)로 나옵니다. 이유가 무엇인지 알아봅시다. shape 메소드는 여러겹으로 중첨된 리스트의 바깥부터 개수를 셉니다. 아래 배열 봅시다. 

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


가장 바깥의 리스트 관점에서 보면 원소의 개수는 [1,2,3] 과 [4,5,6] 두개입니다. 따라서 shape의 첫번째 값은 2가 됩니다. 안에 리스트들의 원소 개수는 3개이므로 shape의 두번째 값은 3이 되어 shape 반환값이 (2,3)인 것입니다. 

이 개념을 3차원 배열에도 적용해봅시다. 

>>> ar3=np.array([ [[1,2,3,4],[5,6,7,8],[9,10,11,12]] , [[13,14,15,16],[17,18,19,20],[21,22,23,24]] ] )


가장 바깥 리스트 관점에서 원소 수는 [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 와 [[13,14,15,16],[17,18,19,20],[21,22,23,24]] 이므로 shape의 첫번째 값은 2가 됩니다. 안에 있는 리스트들의 원소 수는 3개이고, 그 안에 있는 리스트들의 원소 수는 4개이므로 shape 의 반환값은 (2,3,4)가 되는 것입니다. 배열의 차원이 더 높아져도 같은 원리가 적용됩니다. 

반응형

댓글