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]]
これは要素ごとの積ではなく、行列積です。組み込み関数を使用して要素ごとの積(別名アダマール積)を取得するにはどうすればよいですか?
ある
—
jtitusj
a
とb
numpyの配列?また、上の質問では、andの代わりにand を計算に使用x
しy
ています。それは単なるタイプミスですか?a
b
aとbは、
—
派手な
numpy行列ではなく、常にnumpy配列を使用してください。numpy docsがこれについて言っていることを見てください。また、Python 3.5以降では、numpy配列を使用
—
Praveen
@
した行列の乗算に使用できることにも注意してください。これは、配列に対して行列を使用する正当な理由がないことを意味します。
うるさいこと、するに
—
hpaulj 2016年
a
してb
リストです。彼らはで動作しnp.dot
ます。しかし、ではありませんa*b
。np.array(a)
またはを使用した場合np.matrix(a)
、*
機能しますが結果は異なります。
a
とb
numpyののマトリックス型ではありませんか?このクラスで*
は、要素ごとではなく内積を返します。しかし、通常のndarray
クラスで*
は、要素ごとの積を意味します。