具有对角矩阵的点积,而不创建完整矩阵

Seb*_*ian 2 python numpy matrix

我想计算两个矩阵的点积,其中一个是对角矩阵。但是,我不想使用np.diagornp.diagflat来创建完整矩阵,而是使用直接填充对角线值的一维数组。有什么方法或 numpy 操作可以用于解决此类问题?

x = np.arange(9).reshape(3,3)
y = np.arange(3) # diagonal elements
z = np.dot(x, np.diag(y))
Run Code Online (Sandbox Code Playgroud)

我正在寻找的解决方案应该没有 np.diag

z = x ??? y
Run Code Online (Sandbox Code Playgroud)

Jac*_*lam 6

将 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
Run Code Online (Sandbox Code Playgroud)