補足(行列の積)

Koki Saitoh edited this page Apr 4, 2017 · 5 revisions

お詫びと補足

本書において、「行列の内積」という表現を使った箇所がありましたが、正しくは「行列の積」になります(8刷以降は修正済み)。

混乱させてしまい、申し訳ありません。

ここでは、「ベクトルの内積」「行列の積」という用語について、またNumPyのdotnp.dot)について補足させてもらいます。

ベクトルの内積

一次元の配列をベクトルと言います。ここに要素数が同じベクトルが2つあるとき、その2つのベクトルの対応する要素をそれぞれ掛け合わせ、それらを全部足し合わせたものを内積と言います。また、内積はドット積と呼ばれることもあります。

「ベクトルの内積」の例は、Pythonで次のように書くことができます。

import numpy as np 

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
np.dot(a, b) 
# 32

行列の積

2次元の配列は行列と言います。行列の積は、次のように計算します。

行列の積

行列の積は、左側の行列の行(横方向)と右側の行列の列 (縦方向)の間の要素ごとの積とその和によって計算が行われます。そして、その計算の結果は新しい多次元配列の要素として格納されます。たとえば、Aの1行目とBの1列目の結果は1行1列目の要素、Aの2行目とBの1列目は2行1列目の要素といったようになります。

np.dotは、1次元配列の場合は「ベクトルの内積」を、2次元配列の場合は「行列の積」を計算します。そのため、Pythonでは次のように書くことができます。

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
np.dot(A, B) 
#[[19, 22],
# [43, 50]]

まとめ

ベクトルについては「内積」または「ドット積」という用語を用います。行列については「行列の積」という表現を用います。NumPyのnp.dotは、1次元配列(ベクトル)の場合は「ベクトルの内積」を、2次元配列(行列)の場合は「行列の積」を計算します。

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.