numpy의 축 (축) 이해

6393 단어 파이썬입문numpy

axis란?



다차원 배열을 다루는 numpy에서는 axis(축)를 제대로 이해해 두는 것이 중요합니다.

예를 들어, 배열의 합계를 구하는 numpy.sum() 를 생각해 봅시다.

단순한 스칼라나 1차원 배열이라면 축을 생각할 필요도 없이 모든 값을 합하면 됩니다만, 다차원 배열의 경우 어느 축을 따라 합계하면 좋을지를 의식할 필요가 있습니다. 있습니다.
numpy.sum(a, axis)numpy의 sum()은 첫 번째 인수 a에 배열을 지정하고 두 번째 인수에는 axis(축)를 지정합니다.
이 axis에 따라 요소를 더해 가는 것이군요.

2차원 배열의 축



우선은 알기 쉬운 2차원의 배열을 예로 합니다.
2차원 배열에서 행 방향은 axis=0, 열 방향은 axis=1입니다.


Z = np.array([[0,1],
              [2,3]])
print("axis=0    ->", sum(Z,0))
print("axis=1    ->", sum(Z,1))

실행 결과
axis=0    -> [2 4]
axis=1    -> [1 5]

또한 axis에 아무것도 지정하지 않으면 모든 요소의 합계 값(스칼라)이 됩니다.
Z = np.array([[0,1],
              [2,3]])
print(sum(Z))

실행 결과
6

3차원 배열의 축



다음으로 3차원 배열을 생각해 봅시다.
3차원 배열에서는 axis=0이 깊이 방향, axis=1이 행 방향, axis=2가 열 방향이 됩니다.


Z = np.array([[[0,1],
               [2,3]],
              [[4,5],
               [6,7]]])
print("axis=0")
print(sum(Z,0))
print("----")
print("axis=1")
print(sum(Z,1))
print("----")
print("axis=2")
print(sum(Z,2))

실행 결과
axis=0
[[ 4  6]
 [ 8 10]]
----
axis=1
[[ 2  4]
 [10 12]]
----
axis=2
[[ 1  5]
 [ 9 13]]

axis=-1은 무엇을 나타내는가?



axis=-1이면 마지막 축 방향을 나타냅니다. 즉, 3차원 배열이라면 axis=2, 2차원 배열이라면 axis=1과 같습니다.
Z = np.array([[[0,1],
               [2,3]],
              [[4,5],
               [6,7]]])
print("axis=2")
print(sum(Z,2))
print("----")
print("axis=-1")
print(sum(Z,-1))

실행 결과
axis=2
[[ 1  5]
 [ 9 13]]
----
axis=-1
[[ 1  5]
 [ 9 13]]

같은 결과가 되었네요.

좋은 웹페이지 즐겨찾기