【NumPy】行列の積の計算方法をわかりやすく解説してみた

【NumPy】行列の積の計算方法をわかりやすく解説してみた NumPy

Numpyで行列の積を求めることができます。
本投稿では行列の積を求める際の計算方法についてわかりやすく解説します。
今回は難しい数式などは紹介せず、「こうやって計算できるよ」程度に紹介していきます。

同じ形状の行列の積を求める

2×2の行列と2×2の行列の積を求めます。
まずはNumPyのインポートと計算に使用する変数を記載します。

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

NumPyのインポート
行列の変数を生成

計算にはnp.dot()メソッドを用います。

np.dot(a, b)

np.dotで行列の積を計算

上記を式に表すと以下となります。

同じ形状の行列の数式

以下のように同じ色の枠で計算を行います。

同じ形状の行列の数式1
同じ形状の行列の数式2

左の行列は行ベクトル、右の行列は列ベクトルの方向で
内積(要素ごとの積と和)によって計算されます。


例えば
水色だと「1×5+2×7=19」、
黄緑色だと「1×6+2×8=22」となります。

形状が異なる行列の積を求める

2×3の行列と3×2の行列のような形状の異なる行列の積を求めます。

a = np.array([[1, 2, 3],  [4, 5, 6]])
b = np.array([[7, 8], [9, 1], [2, 3]])

形状の異なる行列の積を求める

計算方法は同じ形状の行列の積の求め方と同様です。

形状の異なる行列の積の計算1
形状の異なる行列の積の計算2

紫色は「4×7+5×9+6×2=85」、
オレンジは「4×8+5×1+6×3=55」となります。

形状が異なる行列の積を求める際の注意

形状が異なる行列の積を求めるためには満たすべき条件があります。
以下を確認してみましょう。

形状が異なる行列の積を求めるための条件

上記は「 形状が異なる行列の積を求める 」で登場した行列の形状です。

水色のラインの引いてある
左の行列の列数と右の行列の行数は必ず数を一致させる必要があります。

エラーとなる例を見てみましょう。

エラーとなる行列の積の計算例
行列の積を計算できない場合の例

ValueError: shapes (2,3) and (2,2) not aligned: 3 (dim 1) != 2 (dim 0)

上記は2×3の行列と2×2の行列の積を計算しようとした際の例です。

ValueError: shapes (2,3) and (2,2) not aligned: 3 (dim 1) != 2 (dim 0)

上記のエラーメッセージが示すように
水色の枠を例に行列の積を計算しようとしても
「1×7+2×9+3×」と右側の行列の行数が足りないため
計算することができません。

よって、左側の行列の列数と右側の行列の行数が一致した時に
2つの積を計算することができます。

コメント

タイトルとURLをコピーしました