NumPy の Matrix クラスと Array クラスの乗算はどのように異なりますか? 質問する

NumPy の Matrix クラスと Array クラスの乗算はどのように異なりますか? 質問する

Numpy のドキュメントでは、行列を扱う場合は行列ではなく配列を使用することを推奨しています。ただし、最近まで使用していた octave とは異なり、* は行列の乗算を実行しないため、関数 matrixmultipy() を使用する必要があります。これにより、コードが非常に読みにくくなると思います。

私と同じ意見で、解決策を見つけた人はいますか?

ベストアンサー1

このクラスの使用を避ける主な理由matrixは、a) 本質的に 2 次元であること、b) 「通常の」 numpy 配列に比べてオーバーヘッドが余計にかかることです。線形代数だけを行うのであれば、ぜひとも matrix クラスを使用してください... ただし、個人的には、それだけの価値がないほど面倒だと感じています。

配列の場合(Python 3.5以前)、dotの代わりにmatrixmultiply

例えば

import numpy as np
x = np.arange(9).reshape((3,3))
y = np.arange(3)

print np.dot(x,y)

または、numpyの新しいバージョンでは、単にx.dot(y)

*個人的には、行列の乗算を意味する演算子よりもはるかに読みやすいと思います...

Python 3.5 の配列の場合は、 を使用しますx @ y

おすすめ記事