151

私は2つの行列を持っています

a = np.matrix([[1,2], [3,4]])
b = np.matrix([[5,6], [7,8]])

[[1*5,2*6], [3*7,4*8]]そして、要素ごとの積、 、等号を取得したい

[[5,12], [21,32]]

私が試してみました

print(np.dot(a,b)) 

print(a*b)

しかし、どちらも結果を出します

[[19 22], [43 50]]

これは行列の積であり、要素ごとの積ではありません。組み込み関数を使用して要素単位の積 (別名アダマール積) を取得するにはどうすればよいですか?

4

4 に答える 4

219

オブジェクトの要素ごとの乗算には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 とのあらゆる種類の恐ろしい非互換性があります。*ndarrays を使用すると、要素ごとの乗算に使用できます。

a * b

Python 3.5+ を使用している場合は、演算子を使用して行列の乗算を実行する機能を失うことさえありません。行列の乗算が実行されるようになったため@です

a @ b  # matrix multiplication
于 2016-10-14T05:04:28.967 に答える