공부/파이썬(데이터)

[파이썬] numpy, pandas에서의 axis 이해하기

spine_sunbi 2023. 11. 12. 19:04
반응형

파이썬에서 numpy와 pandas를 공부하다 보면 다차원의 배열을 접하게 되고, 이 과정에서 다양한 함수를 사용하게 되는데요. 이때 axis(축)에 대해서 접하게 됩니다. 다른 분들의 글을 읽어보아도 대다수의 분들이 입문~초보자의 수준에서 공부하게 될 때는, 3차원까지만 알아도 수월하게 공부할 수는 있다고 합니다. 그렇지만, 그래도 공부할 거 이왕이면 중급자는 목표로 해야죠. (혼자 공부하는 데 고수까지는 바라지도 않습니다?)

네, 일단 4차원은 어떻게 그리는지 모르겠어서 3차원 까지만 그렸습니다.

파이썬의 배열은 리스트가 겹겹이 쌓여 중첩된 것입니다.

1차원 배열은 축이 1개, 2차원 배열은 축이 2개, 3차원 배열은 축이 3개입니다.

축은 인덱스와 마찬가지로 1부터 시작하는 게 아니라, 0부터 시작합니다. (여기서 우리는 1차원 배열은 axis0, 2차원 배열은 axis 0, axis1, 3차원 배열은 axis 0, axis1, axis 2로 구성되어 있다는 것을 유추할 수 있습니다.)

기본 단위가 되는 1차원 배열이 가장 안쪽 리스트입니다. (1차원부터 중첩되어 2차원이되고, 3차원이 되고... n차원이 되는 것입니다.)

여기서 바깥쪽 리스트가 axis 0이 되고, 안쪽으로 들어올수록 axis 수가 1씩 증가합니다.

import numpy as np

array_3d = np.arange(1, 33).reshape(4,2,4)
print(array_3d)

[출력]

[[[ 1  2  3  4]
  [ 5  6  7  8]]

 [[ 9 10 11 12]
  [13 14 15 16]]

 [[17 18 19 20]
  [21 22 23 24]]

 [[25 26 27 28]
  [29 30 31 32]]]

 

제가 생성한 3차원 배열은 [출력]과 같습니다. 3차원 배열을 예시로 들고 아래에도 그림으로도 그려보았습니다.

 

[ [ [ 1 2 3 4 ]

    [ 5 6 7 8 ] ]

 

  [ [  9 10 11 12 ]

    [13 14 15 16 ] ]

 

  [ [17 18 19 20 ]

    [21 22 23 24 ] ]

 

   [ [25 26 27 28 ]

     [29 30 31 32 ] ] ]

 

axis0 (가장 바깥쪽 리스트)

[[1 2 3 4] [5 6 7 8 ]] → [[9 10 11 12] [13 14 15 16 ]] [[17 18 19 20] [21 22 23 24 ]] [[25 26 27 28] [29 30 31 32 ]] 

방향으로 진행합니다.

 

axis 1

[1 2 3 4] → [5 6 7 8] ...

방향으로 진행합니다.

 

axis 2 (가장 안쪽 리스트, 기본 단위)

1 → 2 → 3 → 4 ...

방향으로 진행합니다.

3차원 배열

3차원 배열까지는 행, 열, 높이(깊이)의 개념으로 이해할 수 있다고 해도 4차원부터는 이 개념으로는 설명할 수 없는 영역에 도달하게 됩니다. 이 때문에 지금부터 axis(축)의 개념으로 이해하는 게 좋을 것 같습니다.

 

* 물론, 저도 1~3차원에 해당하는 배열이 있을 때는 행,열,높이(깊이)로 이해하며 적용할 것입니다. 다만 4차원 이상부터는 이 개념을 이용하는 게 더 어려울 것 같으니 이런 개념도 알아두셔야 할 것 같습니다!