numpy

배열의 연산

siwoli 2022. 3. 26. 01:12

배열의 연산에는 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축 방향으로 계산한다고 상상하면 된다.