반응형
[파이썬 numpy]
행렬의 곱셈 하는 법 (dot 메소드)
파이썬에서 행렬의 곱셈을 할 때는 dot 메소드를 사용합니다. inner 메소드도 행렬의 곱셈이 수행되기는 하나 우리가 알고 있던 행렬의 곱셈과는 결과가 다릅니다. dot 메소드와 inner 메소드의 비교는 다른 글에서 하겠습니다.
이번 글에서는 dot 메소드를 사용하여 행렬의 곱셈을 해봅시다.
두 행렬을 정의합시다.
>>> import numpy as np
>>> A1=np.array([[1,2,3],[4,5,6]])
>>> A2=np.array([[1,2,3],[4,5,6]])
dot 메소드를 적용해봅시다.
>>> np.dot(A1,A2)
Traceback (most recent call last):
File "<ipython-input-450-9d56b3b8777d>", line 1, in <module>
np.dot(A1,A2)
File "<__array_function__ internals>", line 6, in dot
ValueError: shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)
에러가 발생합니다. 행렬의 차원이 맞지 않아서입니다. A1 행렬은 2행3열, A2행렬도 2행3열이라 계산시 (2X3)(2X3) 으로 차원이 맞지 않습니다. A2 행렬을 전치(transpose)해주면 해결됩니다.
>>> np.dot(A1,A2.T)
array([[14, 32],
[32, 77]])
반응형
'5-2 . Numpy 제공 자료구조 > Array 연산' 카테고리의 다른 글
[파이썬 numpy] 배열의 두 축을 서로 바꾸기 (swapaxes 메소드) (0) | 2020.11.11 |
---|---|
[파이썬 numpy] 배열의 전치를 원하는 방향으로 (transpose 메소드) (2) | 2020.11.11 |
[파이썬 numpy] 벡터곱 하는법 (고등학교에서 배운 그 외적, cross 메소드) (0) | 2020.11.10 |
[파이썬 numpy] 외적이 헷갈리는 이유 (cross product, outer product 차이) (0) | 2020.11.10 |
[파이썬 numpy] 벡터의 내적 (dot 또는 inner 메소드) (0) | 2020.11.10 |
댓글