2 분 소요

numpy의 통계 함수와 axis에 대해 알아보겠습니다. 특히 axis는 데이터 분석, 머신러닝을 하실 분은 꼭 알아야 하는 개념입니다.

통계 함수

numpy는 다양한 통계 함수를 제공합니다.

import numpy as np

arr = np.arange(10)

print(arr)
print(arr.sum())
print(arr.mean())
print(arr.max())
print(arr.min())
print(arr.std())
print(arr.var())
print(arr.argmin())
print(arr.argmax())
  • arr.sum(): arr의 모든 원소의 합을 구합니다.
  • arr.mean(): arr의 모든 원소의 평균을 구합니다.
  • arr.max(): arr의 모든 원소의 최댓값을 구합니다.
  • arr.min(): arr의 모든 원소의 최솟값을 구합니다.
  • arr.std(): arr의 모든 원소의 표준편차를 구합니다.
  • arr.var(): arr의 모든 원소의 분산을 구합니다.
  • arr.argmin(): arr의 모든 원소 중 최솟값의 인덱스를 구합니다.
  • arr.argmax(): arr의 모든 원소 중 최댓값의 인덱스를 구합니다.
[0 1 2 3 4 5 6 7 8 9]
45
4.5
9
0
2.8722813232690143
8.25
0
9

다른 방법(numpy 모듈의 함수)

import numpy as np

arr = np.arange(10)

print(arr)
print(np.sum(arr))
print(np.mean(arr))
print(np.max(arr))
print(np.min(arr))
print(np.median(arr))
print(np.std(arr))
print(np.var(arr))
print(np.argmin(arr))
print(np.argmax(arr))
  • np.sum(arr): arr의 모든 원소의 합을 구합니다.
  • np.mean(arr): arr의 모든 원소의 평균을 구합니다.
  • np.max(arr): arr의 모든 원소의 최댓값을 구합니다.
  • np.min(arr): arr의 모든 원소의 최솟값을 구합니다.
  • np.median(arr): arr의 모든 원소의 중앙값을 구합니다.
  • np.std(arr): arr의 모든 원소의 표준편차를 구합니다.
  • np.var(arr): arr의 모든 원소의 분산을 구합니다.
  • np.argmin(arr): arr의 모든 원소 중 최솟값의 인덱스를 구합니다.
  • np.argmax(arr): arr의 모든 원소 중 최댓값의 인덱스를 구합니다.
[0 1 2 3 4 5 6 7 8 9]
45
4.5
9
0
4.5
2.8722813232690143
8.25
0
9

2차원 배열의 sum

2차원 배열의 sum을 구해보겠습니다.

import numpy as np

arr = np.arange(10).reshape(2, 5)

print(arr)
print(arr.sum())
[[0 1 2 3 4]
 [5 6 7 8 9]]
45

모두 더한 합인 45가 나왔습니다.

만약 가로 합이나 세로 합을 구하고 싶다면?

import numpy as np

arr = np.arange(10).reshape(2, 5)

print(arr)
print()
print(arr.sum(axis=0))
print(arr.sum(axis=1))
  • arr.sum(axis=0): 0축의 합을 구합니다.
  • arr.sum(axis=1): 1축의 합을 구합니다.
[[0 1 2 3 4]
 [5 6 7 8 9]]
[ 5  7  9 11 13]
[10 35]

axis는 축을 의미합니다. axis=0은 가로 축(행), axis=1은 세로 축(열)을 의미합니다. 이해 하기 쉽도록 가로 축(행)으로 표현 했습니다. 가로축(행)의 합은 가로축 방향으로 연산합니다. ([0+5, 1+6, 2+7, 3+8, 4+9]) 세로축(열)의 합은 세로축 방향으로 연산합니다. ([0+1+2+3+4, 5+6+7+8+9])

axis를 2로 설정하면?

import numpy as np

arr = np.arange(10).reshape(2, 5)

print(arr)
print()
print(arr.sum(axis=2))
[[0 1 2 3 4]
 [5 6 7 8 9]]

Traceback (most recent call last):
  File "C:/Users/82109/PycharmProjects/pythonProject/venv/Scripts/2024-01-13-python-numpy-06.py", line 7, in <module>
    print(arr.sum(axis=2))
  File "<__array_function__ internals>", line 5, in sum
  File "C:\Users\82109\PycharmProjects\pythonProject\venv\lib\site-packages\numpy\core\fromnumeric.py", line 2257, in sum
    return _wrapreduction(a, np.add, 'sum', axis, dtype, out, keepdims=keepdims,
  File "C:\Users\82109\PycharmProjects\pythonProject\venv\lib\site-packages\numpy\core\fromnumeric.py", line 87, in _wrapreduction
    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
ValueError: 'axis' entry is out of bounds

axis를 2로 설정하면 에러가 발생합니다. 2차원 배열이므로 axis는 2(0, 1)개가 존재합니다.

3차원 배열의 sum

3차원 배열의 sum을 구해보겠습니다.

import numpy as np

arr = np.arange(18).reshape(2, 3, 3)

print(arr)
print()
print(arr.sum(axis=0))
print(arr.sum(axis=1))
print(arr.sum(axis=2))
[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]]

 [[ 9 10 11]
  [12 13 14]
  [15 16 17]]]

[[ 9 11 13]
 [15 17 19]
 [21 23 25]]

[[ 9 12 15]
 [36 39 42]]

[[ 3 12 21]
 [30 39 48]]

해시태그: #python #numpy #통계함수 #sum

댓글남기기