배열의 연산
배열의 연산에는 sum(∑), mean(평균), std(표준편차), sqrt(√), square(모든 값²) 등이 있다.
각각의 연산은 parameter인 axis를 이용하여 계산할 수 있는데,
axis=0 이면 행 끼리 계산하고
axis=1 이면 열 끼리 계산한다.
예를 들어보면
import numpy as np
test_arr = np.arange(1,13).reshape(4,-1)
test_arr
>array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
test_arr.sum(axis=0)
>array([22, 26, 30])
위와 같이 axis=0이면 행끼리 더해서 결과 값의 개수 = 기존 배열 열의 개수와 같다.
axis=0은 행 방향, axis=1은 열 방향이라고 외우기보단
위에서 말한 것 처럼 외우면 헷갈리지 않을 것 같다.
그리고 새로운 차원이 추가되면 그 차원은 axis=0이 된다.
예를 들어보면
test_3d_arr = np.array([test_arr, test_arr, test_arr])
test_3d_arr
>array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]],
[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]],
[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]]])
test_3d_arr의 shape=(3,4,3)이다. 여기서 axis=0일때 sum은
test_3d_arr.sum(axis=0)
>array([[ 3, 6, 9],
[12, 15, 18],
[21, 24, 27],
[30, 33, 36]])
위와 같이 3차원의 데이터들을 기준으로 각각의 (행, 열) 인덱스가 일치하는 것들끼리 계산된다.
즉, 3차원 상에서 행끼리 계산된다. 3차원 공간의 좌표축을 상상해보면 이해가 빠르다.
그리고 axis=1일때 sum은
test_3d_arr.sum(axis=1)
>array([[22, 26, 30],
[22, 26, 30],
[22, 26, 30]])
위와 같이 3차원의 데이터를 기준으로 열끼리 계산된다.
3차원 좌표축에서 z축 방향으로 계산한다고 상상하면 된다.