행렬의 곱셈
전편에 이어 행렬의 곱셈에 관해서 포스팅하겠습니다.
행렬의 곱셈에는 몇가지 규칙이 있습니다.
즉, 곱셈을 할 때 첫번째 행렬의 열과 두 번 째 행렬의 행의 차원이 같아야 합니다.
구체적으로 무슨 말인지 아래의 그림에서 알아보겠습니다.
즉, 행렬의 곱셈이 가능하게 하려면, 오른쪽의 행렬을 (3x1)이나 (3x2) 행렬로 바꿔줘야 합니다.
즉 1 X 3 3 X 1 1 X 3 3 X 1 이 되어야지 행렬 곱셈이 가능해 집니다.
예시로 2x2 행렬로 행렬의 곱을 해보겠습니다.
위와 같은 결과값이 나옵니다.
※참고 : 일반 숫자들의 곱셈과는 달리 행렬의 곱셈에서는 순서에 따라 값이 달라집니다.
넘파이에서는 실제 행렬 연산과 달리 폭넓은 브로드캐스팅을 제공해줍니다.
# n차원 x 1차원
a = np.array([[1, 3], [2, 4]])
b = np.array([2, 5])
np.dot(a, b)
# 결과
array([17, 24])
위의 코드는 2x2 행렬과 1x2의 행렬 곱으로 실제 연산으로는 불가능한 행렬곱입니다.
하지만 넘파이에서는 n차원 x 1차원 곱을 가능하게끔 지원해 줍니다.
하지만 이전의 덧셈 연산과 같이 만약 1차원 행렬의 성분의 갯수가 다차원 행렬의 성분의 갯수와 맞지 않다면,
브로드캐스팅 조건에 부합하지 않습니다.
# n차원 x 1차원
a = np.array([[1, 3], [2, 4]])
b = np.array([2, 5, 5])
np.dot(a, b)
# 브로드캐스팅이 조건에 부합하지 않습니다.!!
참조 블로그 : [행렬 이론 03탄] 행렬의 연산 (곱셈) - winner (tistory.com) https://jimmy-ai.tistory.com/75
'플레이데이터 빅데이터 부트캠프 12기 > 기초수학 및 통계' 카테고리의 다른 글
기초 통계 (0) | 2022.08.01 |
---|---|
행렬 연산과 브로드캐스팅(Broadcasting)(1) (1) | 2022.07.21 |