dot関数【numpy】
より手軽に行列積(結果は次元をもつ)や内積(次元をもたないスカラ値という意味)を求めるための関数である。まず、
A : 2D array
x : 1D array
b : 0D array
とする。
code:p01.py
import numpy as np
A = np.array(1, 2, 3], 4, 5, 6, [7, 8, 9)
x = np.array(1, 2 , 3)
b = np.array(2)
print(A.ndim, A.shape)
print(x.ndim, x.shape)
print(b.ndim, b.shape)
# 2 (3, 3)
# 1 (3,)
# 0 ()
2D同士
結果は2D、通常の行列積が計算される。@演算子やmatmul関数【numpy】と同じ。
code:(続き)p01.py
y = np.dot(A, A)
print(y.ndim, y.shape)
print(y)
# 2 (3, 3)
# [ 30 36 42
# 66 81 96
# 102 126 150]
2D と1D
結果は1D、@演算子やmatmul関数【numpy】と同じ。
code:(続き)p1.py
y1 = np.dot(A, x)
print(y1.ndim, y1.shape)
print(y1)
y2 = np.dot(x, A)
print(y2.ndim, y2.shape)
print(y2)
# 1 (3,)
# 14 32 50
# 1 (3,)
# 30 36 42
2Dと0D
結果は0D、@演算子やmatmul関数【numpy】とは異なり計算できている。前後を入れ替えても同じ結果が得られる。
code:(続き)p01.py
y = np.dot(A, b)
print(y.ndim, y.shape)
print(y)
# 2 (3, 3)
# [ 2 4 6
# 8 10 12
# 14 16 18]
1D同士
結果は0D、内積が求まっている。
code:(続き)p01.py
y = np.dot(x, x)
print(y.ndim, y.shape)
print(y)
# 0 ()
# 14
1Dと0D
結果は1D、1D 配列の各要素のスカラ倍である。順序を入れ替えても同じ。
code:(続き)p01.py
y = np.dot(x, b)
print(y.ndim, y.shape)
print(y)
# 1 (3,)
# 2 4 6
0D同士
kekkaha
0D、スカラ同士の掛け算である。
code:(続き)p01.py
y = np.dot(x, x)
print(y.ndim, y.shape)
print(y)
# 0 ()
# 4