2016-03-22 113 views
1

我想计算两个矩阵的点积,其中一个是对角矩阵。但是,我不想使用np.diagnp.diagflat来创建完整矩阵,而是使用直接填充对角线值的1D阵列。我可以用这种方法解决这个问题吗?带对角矩阵的点积,不创建它全矩阵

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

,我寻找的解决方案应该是没有np.diag

z = x ??? y 
+1

对广播使用简单乘法:'x * y'? – Divakar

+0

谢谢!!!!!!!!! – Sebastian

回答

4

直接乘以你的载体将工作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