Python/Numpy
[Numpy] 기본 축의 개념 vs 행렬 연산 시 축의 개념
yeonny_do
2023. 11. 10. 18:08
■ '축'
numpy에서는 다차원 배열의 계산을 간편하게 한다는 큰 장점이 있다. 그런데 행렬을 연산할 때 축의 개념이 본래 알던 축의 개념과는 조금 달라 혼란이 생길 수 있다. 기본적인 행렬의 축의 개념은 아래와 같다.
행은 행렬에서 → 방향이므로 행의 축은 0이다. 열은 ↓ 방향이므로 열의 축은 1이다.
하지만, 다차원 행열 계산에 적합한 numpy에서는 모듈 내 함수에서 축을 가리키는 axis라는 옵션이 존재한다. 그런데 axis는 2차원 행렬 연산( 결합이나 변형) 시에, 행 별 계산을 하고자 할 때는 axis=1, 열별 계산을 할 때는 axis=0이라는 옵션을 걸어줘야 한다. 3차원 행렬에서는 깊이의 계산 시에는 axis=0, 열별 계산 시에는 axis=1, 행별 계산 시에는 axis=2라는 옵션을 줘야한다. 이는 기본적으로 생각하고 있는 행렬의 축의 개념과는 다르기 때문에 유념하여 사용해야 한다. 그런데 이 옵션들은 연산시에 적용되고, 연산을 제외한 배열의 구조 변경 등에서는 원래 축의 개념 (행:0, 열:1)대로 생각해야한다.
■ 2차원 행렬의 축
열 계산 시. axis =0
행 계산 시, axis = 1
■ 3차원 행렬의 축
깊이 계산 시, axis = 0
열 계산 시, axis = 1
행 계산 시. axis =2
import numpy as np
array1 = np.array([[1,2],[3,4]])
print(array1)
print(array1.shape) # 2행 2열
# [[1 2]
# [3 4]]
# (2, 2)
array2 = np.array([[[1,2,3],
[4,5,6]],
[[7,8,9],
[10,11,12]]])
print(array2)
print(array2.shape) # 2행 3열인 배열이 2개
# [[[ 1 2 3]
# [ 4 5 6]]
# [[ 7 8 9]
# [10 11 12]]]
# (2, 2, 3)
print('2차원 배열의 axis=0 기준 합 : ',end='')
print(np.sum(array1,axis=0))
print('2차원 배열의 axis=1 기준 합 : ',end='')
print(np.sum(array1,axis=1))
# 2차원 배열의 axis=0 기준 합 : [4 6]
# 2차원 배열의 axis=1 기준 합 : [3 7]
print('3차원 배열의 axis=0 기준 합 : ')
print(np.sum(array2,axis=0))
# 3차원 배열의 axis=0 기준 합 :
# [[ 8 10 12]
# [14 16 18]]
print('3차원 배열의 axis=1 기준 합 : ')
print(np.sum(array2,axis=1))
# 3차원 배열의 axis=1 기준 합 :
# [[ 5 7 9]
# [17 19 21]]
print('3차원 배열의 axis=2 기준 합 : ')
print(np.sum(array2,axis=2))
# 3차원 배열의 axis=2 기준 합 :
# [[ 6 15]
# [24 33]]