행렬의 하나의 행에 있는 원소들을 하나의 데이터 집합으로 보고 그 집합의 평균을 구하면 각 행에 대해 하나의 숫자가 나오게 된다. 예를 들어 10x5 크기의 2차원 배열에 대해 행-평균을 구하면 10개의 숫자를 가진 1차원 벡터가 나오게 된다. 이러한 연산을 차원 축소(dimension reduction) 연산이라고 한다.
넘파이는 다음과 같은 차원 축소 연산 명령 혹은 메서드를 지원한다.
- 최대/최소: min, max, argmin, argmax
- 통계: sum, mean, median, std, var
- 불리언: all, any
import numpy as np
a = np.array([[1,2,3,4,5,6],
[7,8,9,10,11,12],
[13,14,15,16,17,18],
[19,20,21,22,23,24],
[25,26,27,28,29,30]])
최대/최소
np.min(배열, axis)
배열의 데이터 중에 최댓값을 반환
# 행렬의 최소값
np.min(a)
1
연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.
- axis=0인 경우는 열 연산,
- axis=1인 경우는 행 연산.
- 디폴트 값은 axis=0 입니다.
- 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 최솟값
np.min(a, axis=0)
array([1, 2, 3, 4, 5, 6])
np.max(배열, axis)
배열의 데이터 중에 최댓값을 반환
# 행렬의 최대값
np.max(a)
30
연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.
- axis=0인 경우는 열 연산,
- axis=1인 경우는 행 연산.
- 디폴트 값은 axis=0 입니다.
- 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 행의 최대값
np.max(a, axis=1)
array([ 6, 12, 18, 24, 30])
np.argmin(배열, axis)
배열의 데이터 중에 최솟값의 위치를 반환
# 최솟값의 위치
np.argmin(a)
0
연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.
- axis=0인 경우는 열 연산,
- axis=1인 경우는 행 연산.
- 디폴트 값은 axis=0 입니다.
- 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 행의 최솟값의 위치
np.argmin(a, axis=1)
array([0, 0, 0, 0, 0], dtype=int64)
np.argmax(배열, axis)
배열의 데이터 중에 최댓값의 위치를 반환
# 최댓값의 위치
np.argmax(a)
연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.
- axis=0인 경우는 열 연산,
- axis=1인 경우는 행 연산.
- 디폴트 값은 axis=0 입니다.
- 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 최댓값의 위치
np.argmax(a, axis=0)
array([4, 4, 4, 4, 4, 4], dtype=int64)
통계
np.sum(배열, axis)
배열의 데이터들의 합을 반환
# 배열의 총 합
np.sum(a)
465
연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.
- axis=0인 경우는 열 연산,
- axis=1인 경우는 행 연산.
- 디폴트 값은 axis=0 입니다.
- 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 총합
np.sum(a, axis=0)
array([65, 70, 75, 80, 85, 90])
# 각 행의 총합
np.sum(a, axis=1)
array([ 21, 57, 93, 129, 165])
np.mean(배열, axis)
배열의 데이터들의 평균을 반환
# 배열의 총 평균
a.mean()
15.5
연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.
- axis=0인 경우는 열 연산,
- axis=1인 경우는 행 연산.
- 디폴트 값은 axis=0 입니다.
- 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 평균
np.mean(a, axis=0)
array([13., 14., 15., 16., 17., 18.])
# 각 행의 평균
np.mean(a, axis=1)
array([ 3.5, 9.5, 15.5, 21.5, 27.5])
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]
불리언
np.all(조건)
배열의 모든 데이터가 조건과 맞으면 True / 하나라도 다르면 False를 반환
# 배열 arr 안의 데이터 전체가 5보다 큰가?
np.all(arr > 5)
False
# arr 배열 내의 데이터 전체가 10보다 작은가?
np.all(arr < 10)
True
np.any(조건)
배열의 데이터 중 조건과 맞는 데이터가 하나라도 있으면 True / 전혀 없으면 False를 반환
# 배열 arr 내의 데이터 중 5보다 큰 데이터가 하나라도 있는가?
np.any(arr > 5)
True
# 배열 arr 내의 데이터 중 0보다 작은 값이 있는가?
np.any(arr < 0)
False