행렬의 덧셈과 뺄셈은 행렬의 구성 성분(element) 단위의 계산이다.
덧셈과 뺄셈에서는 기본적으로 두 행렬의 행과 열의 크기가 같아야 한다. 예를 들어 행렬
import numpy as np
A = np.array([[1,2,3], [4,5,6]])
B = np.array([[7,8,9], [10,11,12]])
C = A+B
D = A-B
print("C=", C, "\nD=", D)
그러면
print("A+3=", A+3)
그렇다면, 다음 덧셈은 가능할까?
일 때,

E = np.array([[1],[2]])
print("A+E=", A+E)
이와 같이 부족한 행과 열을 같은 성분으로 채워서 계산하는 방법을 브로드캐스팅(broadcasting)이라고 한다. 매트랩에서도 동일한 방법을 사용한다.
매트랩에서는 행렬의 곱셈이 기본적으로 행렬 단위로 계산되는 것에 비해, 넘파이에서는 행렬의 성분 단위로 계산된다.
print("A*B=", A*B)
행렬의 성분 단위 곱셈에도 브로드캐스팅이 적용된다.
행렬 곱셈을 하려면 행렬
G = A.dot(B.T)
print("AB^T=", G)
행렬의 모든 성분의 총합은 ndarray.sum() 을 사용한다.
print("A=", A, "\nA.sum=", A.sum())
행렬의 행 단위의 합은 ndarray.sum(axis=0), 열 단위의 합은 ndarray.sum(axis=1)을 사용한다. 행렬 A의 행 단위의 합은 [5 7 9]가, 열 단위의 합은 [6 15]인 1차원 어레이가 출력된다.

print(A.sum(axis=0), A.sum(axis=1))
print(A.sum(axis=0).shape, A.sum(axis=1).shape)
행렬의 모든 성분의 평균은 ndarray.mean() 을 사용한다. 행렬의 행 단위의 평균은 ndarray.mean(axis=0), 열 단위의 평균은 ndarray.mean(axis=1) 을 사용한다.
print(A.mean(), A.mean(axis=0), A.mean(axis=1))
행렬의 모든 성분의 최대값은 ndarray.max() 을 사용한다. 행렬의 행 단위의 최대값은 ndarray.max(axis=0), 열 단위의 최대값은 ndarray.max(axis=1) 을 사용한다.
print(A.max(), A.max(axis=0), A.max(axis=1))
최소값은 max 대신에 min 을 사용하면 된다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
판다스(Pandas)에서 CSV파일 읽기 (0) | 2023.05.18 |
---|---|
주피터 노트북 사용법 (1) | 2021.05.05 |
넘파이(numpy)에서 행렬 모양 바꾸기, 자르기, 확장하기 (0) | 2021.03.11 |
넘파이(numpy)에서 행렬 생성 (0) | 2021.03.11 |
댓글