多次元配列の演算
マトリックスの内積
2 D配列マトリクスの内積を求める方法
(abcd)×(pqrs)=(ap+braq+bscp+drcq+ds)\begin{pmatrix} a & b\\c & d\\\end{pmatrix}\times\begin{pmatrix} p & q\\r & s\\\end{pmatrix} =\begin{pmatrix} ap+br & aq+bs\\cp+dr & cq+ds\\\end{pmatrix}(acbd)×(prqs)=(ap+brcp+draq+bscq+ds)
マトリックスの内積左行列の行(横方向)と右行列の列(縦方向)を要素で乗算し、これらの値を加算します. 計算の結果は、新しい多次元配列の要素となる. 行列は通常大文字で表されるのが慣例である.
A×B≠B×AA\times B\ne B\times AA×B=B×A
💡 ルール:1番目のマトリクスの1番目の次元の要素数(列数)が2番目のマトリクスの0番目の次元の要素数(行数)と一致すると、マトリクスの内積を求めることができます.
👉 C@A演算:(2,2)@(2,2)
2 D配列マトリクスの内積を求める方法
(abcd)×(pqrs)=(ap+braq+bscp+drcq+ds)\begin{pmatrix} a & b\\c & d\\\end{pmatrix}\times\begin{pmatrix} p & q\\r & s\\\end{pmatrix} =\begin{pmatrix} ap+br & aq+bs\\cp+dr & cq+ds\\\end{pmatrix}(acbd)×(prqs)=(ap+brcp+draq+bscq+ds)
マトリックスの内積
import numpy as np
A = np.array([[1, 2],
[3, 4])
B = np.array([5, 6],
[7, 8])
print('행렬 A의 shape : {} ' .format(A.shape))
print('행렬 B의 shape : {} ' .format(B.shape))
~~>
행렬 A의 shape : (2, 2)
행렬 B의 shape : (2, 2)
行列の内積演算子@またはnpを使用します.dot関数を使用して求めることができます.print('A와 B의 내적 : \n{}' .format(np.dot(A, B))
~~>
A와 B의 내적 :
[[19 22]
[43 50]]
print('A와 B의 내적 : \n{}' .format(A @ B))
~~>
A와 B의 내적 :
[[19 22]
[43 50]]
整列行列の内積交換法則は成立しない.A×B≠B×AA\times B\ne B\times AA×B=B×A
print(A @ B)
~~>
[[19 22]
[43 50]]
print(B @ A)
~~>
[[23 34]
[31 46]]
行と列の数が異なるマトリクスの内積💡 ルール:1番目のマトリクスの1番目の次元の要素数(列数)が2番目のマトリクスの0番目の次元の要素数(行数)と一致すると、マトリクスの内積を求めることができます.
A = np.array([[1, 2, 3],
[4, 5, 6]]) # shape : (2, 3)
B = np.array([[1, 2],
[3, 4],
[5, 6]])
print(A @ B)
~~>
[[22 28]
[49 64]]
print(B @ A)
~~>
[[9 12 15]
[19 26 33]
[29 40 51]]
C = np.array([[1, 2],
[3, 4]])
👉 A@C演算はサポートされていません:(2,3)@(2,2)👉 C@A演算:(2,2)@(2,2)
print(C @ A)
~~>
[[9 12 15]
[19 26 33]]
次元数が異なっていても計算できますA = np.array([[1, 2],
[3, 4],
[5, 6]])
B = np.array([7, 8]) # 행 벡터의 모형을 하고 있지만 numpy 에서는 열 벡터로 표현이 된다.
A.shape, B.shape
~~>
((3, 2), (2, ))
print(A @ B)
~~>
[23 53 83]
👉 B@A演算はできません.Reference
この問題について(多次元配列の演算), 我々は、より多くの情報をここで見つけました https://velog.io/@ksj5738/다차원-배열의-연산テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol