2016-03-22 13 views
1

2つの行列の内積を計算したいと思います。そのうちの1つは対角行列です。しかし、完全な行列を作成するためにnp.diagまたはnp.diagflatを使用するのではなく、斜めの値で直接埋め込まれた1次元配列を使用します。私はこの種の問題に使うことができる何らかの方法や厄介な操作がありますか?対角行列を持つドット積、完全な行列を作成しない

x = np.arange(9).reshape(3,3) 
y = np.arange(3) # diagonal elements 
z = np.dot(x, np.diag(y)) 

z = x ??? y 
+1

'broadcast':' x * y'で単純な乗算を使用しますか? – Divakar

+0

ありがとう!!!!!!!!! – Sebastian

答えて

4

np.diagが直接動作しますあなたのベクターによるndarrayを掛けることなく、私が探している解決策はする必要があります。 Numpyはxのn番目の列にy番目のn番目の要素を掛けたいと便利だと仮定します。

x = np.random.random((5, 5) 
y = np.random.random(5) 

diagonal_y = np.diag(y) 
z = np.dot(x, diagonal_y) 
np.allclose(z, x * y) # Will return True 
+0

ありがとう!それを知らなかった! – Sebastian

関連する問題