マトリックスが2つあります
a = np.matrix([[1,2], [3,4]])
b = np.matrix([[5,6], [7,8]])
そして要素ごとの積 を求めたいのですが、[[1*5,2*6], [3*7,4*8]]
これは次の式に等しくなります。
matrix([[5, 12], [21, 32]])
試してみましたがnp.dot(a,b)
、a*b
どちらも結果は同じでしたmatrix([[19, 22], [43, 50]])
これは行列積であり、要素ごとの積ではありません。組み込み関数を使用して要素ごとの積 (別名アダマール積) を取得するにはどうすればよいですか?
ベストアンサー1
オブジェクトの要素ごとの乗算にはmatrix
、numpy.multiply
:
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
np.multiply(a,b)
結果
array([[ 5, 12],
[21, 32]])
ただし、array
の代わりにを使用することをお勧めしますmatrix
。matrix
オブジェクトは通常の ndarray とさまざまなひどい非互換性があります。 ndarray では、*
要素ごとの乗算に を使用できます。
a * b
Python 3.5以降を使用している場合は、演算子を使用して行列の乗算を実行する機能も失われません。@
行列の乗算を今行う:
a @ b # matrix multiplication