我使用Python、Numpy和Scipy包进行矩阵计算。我试图执行计算X.transpose() * W * X
,其中X是2x3密集矩阵,W是稀疏对角矩阵。(下面的例子非常简单)
import numpy
import scipy.sparse as sp
X = numpy.array([[1, 1, 1],[2, 2, 2]])
W = sp.spdiags([1, 2], [0], 2, 2).tocsr()
我需要找出稠密矩阵X的乘积。转置和稀疏矩阵W的乘积
据我所知,scipy中的一个方法不接受右侧的稀疏矩阵。在
^{pr2}$如果稀疏矩阵是scipy中右边的项,有没有一种方法可以乘以稀疏矩阵和稠密矩阵?如果没有,在不把W变成稠密矩阵的情况下,最好的方法是什么?在
矩阵乘法是相联的,因此您总是可以首先计算
W * X
:如果您真的要计算
^{pr2}$X.T * W
,第一个密集,第二个稀疏,您可以让稀疏矩阵__mul__
方法为您处理:实际上,对于您的用例,如果您使用
np.matrix
而不是np.array
,那么您的特定操作会变得异常整洁:相关问题 更多 >
编程相关推荐