MATLAB と Numpy の行列操作

最終更新日: 2020年6月10日

MATLAB と Numpy (ndarray) の行列操作の対応をまとめました

Link

MATLAB: documentation
Numpy: documentation

行列作成・操作

空の行列

MATLAB
zeros(M,N)
ones(M,N)
Numpy
np.zeros((M,N))
np.ones((M,N))

繰り返し

MATLAB
repmat(A, 5)
repmat(A, 5, 5)
Numpy
np.repeat(A, 5)
np.tile(A, (5,5))

転置

MATLAB
A'
reshape(A, 3, 2, 1)
Numpy
A.T
np.transpose(A, (2,1,0))

算術演算子

総和

Aij\sum A_{ij}
MATLAB
sum(A, 'all')
sum(A)
sum(A, 2)
Numpy
np.sum(A)
np.sum(A, axis=0)
np.sum(A, axis=1)

総積

Aij\prod A_{ij}
MATLAB
prod(A, 'all')
prod(A)
prod(A, 2)
Numpy
np.prod(A)
np.prod(A, axis=0)
np.prod(A, axis=1)

要素積(アダマール積)

ABA \circ B
MATLAB
A.*B
Numpy
A*B
np.multiply(A, B)

行列積

ABAB
MATLAB
A*B
Numpy
A@B
np.dot(A,B)

クロネッカー積

ABA \otimes B
MATLAB
kron(A, B)
Numpy
np.kron(A,B)

要素べき乗

MATLAB
A.^2
Numpy
np.power(A, 2)

行列べき乗

MATLAB
A^2
Numpy
np.linalg.matrix_power(A, 2)

行列の探索

大きさ

MATLAB
size(A, 1)
Numpy
np.shape(A)[0]

条件合致

MATLAB
find(A > 0)
Numpy
np.where(A > 0)[0]

線形代数

行列式

detA\det A
MATLAB
det(A)
Numpy
np.linalg.det(A)

逆行列

A1A^{-1}
MATLAB
inv(A)
Numpy
np.linalg.inv(A)

疑似逆行列

AA^{\dagger}
MATLAB
pinv(A)
Numpy
np.linalg.pinv(A)

固有値分解

Av=λvA=VWV1Av = \lambda v \\ A = VWV^{-1}
MATLAB
[V, W] = eig(A)
Numpy
w, V = np.linalg.eig(arr)
W = np.diagonal(w)

特異値分解

A=USVA = U S V^{*}
MATLAB
[U, S, V] = svd(A) 
Numpy
U, s, V = np.linalg.svd(A)
S = np.diagonal(s)

リンク