파이썬 넘파이 합계 함수 np.sum() 사용 방법 정리
안녕하세요.
이번 글에서는 넘파이 라이브러리에서 전체 합계 혹은 축 합계를 구할 수 있는
np.sum 함수의 사용법을 주요 인자인 axis와 keepdims 인자를 중심으로
설명해보는 시간을 가져보도록 하겠습니다.
np.sum() 함수 기본 사용법
기본 사용법은 array 내 전체 값들의 합을 구하는 방법으로,
파이썬 내장 함수인 sum과 동일한 기능을 수행하게 됩니다.
np.sum(array) 혹은 array.sum() 두 가지 형태로 전체 합계를 구할 수 있습니다.
이번 글에서는 아래의 간단한 2차원 배열에서 합계를 구한 예시를 살펴보도록 하겠습니다.
import numpy as np
a = np.array([[1, 0, 3],
[2, 5, 4],
[3, 6, 7]])
np.sum(a) # a.sum() 가능, 결과 : 31
축 합계 구하기 : axis 인자
모든 원소의 합계가 아닌, 특정 축을 기준으로만 합계를 구하기 위해서는,
axis 인자를 지정해주시면 됩니다.
np.sum(array, axis = 1) 처럼 사용하시면 되는데, 'axis = '를 생략하고 np.sum(array, 1)
로도 사용이 가능하며, array.sum(array, 1)의 표현 방법도 유효합니다.
축 합계의 원리를 그림으로 나타내면 다음과 같이 표현할 수 있습니다.
기본적으로 keepdims 인자가 지정되지 않은 상황에서는,
n차원 array를 input으로 넣으면 n-1차원 array가 결과로 반환됩니다.
np.sum(a, axis = 0)
# array([ 6, 11, 14])
np.sum(a, axis = 1)
# array([ 4, 11, 16])
2차원 array의 축 합계를 구한 결과는 1차원 array로 반환되었습니다.
차원 유지하여 합계 구하기 : keepdims 인자
n차원 array에서 축 합계를 구한 뒤, 반환 결과를 n차원으로 유지하기 위해서는
keepdims 인자를 True로 지정해주시면 됩니다.
np.sum(a, axis = 0, keepdims = True)
# array([[ 6, 11, 14]])
np.sum(a, axis = 1, keepdims = True)
'''
array([[ 4],
[11],
[16]])'''
axis = 0 방향으로 더한 결과는 각 열들의 합이 행벡터 형태로 저장된 결과인데,
3 크기의 1차원 벡터가 아닌 (1, 3) 크기의 2차원 행렬로 나타내어
행벡터 형태로 값이 저장되었다는 정보를 보존하고 있음을 확인할 수 있었습니다.
반면, axis = 1 방향으로 더한 결과는 각 행들의 합이 열벡터 형태로 저장된 결과로,
(3, 1) 크기의 2차원 행렬로 열벡터 형태라는 정보가 보존되며 결과가 반환되었습니다.
'Python > Numpy' 카테고리의 다른 글
[Numpy] 파이썬 상삼각행렬 생성 함수 : np.triu 사용법 (1) | 2022.02.05 |
---|---|
[Numpy] 파이썬 SVD 차원 축소 예제 : np.linalg.svd() 또는 LA.svd() (0) | 2022.01.20 |
[Numpy] 행렬곱 함수 np.matmul 사용법, np.dot과의 차이 (0) | 2022.01.19 |