将稀疏矩阵每列与向量相乘后求和
我有一个很大的稀疏矩阵 X
。
还有一个向量 y
,它的元素数量和 X
的行数是一样的。
我想计算每一列在与 y
相乘后得到的总和。
如果 X
是一个密集矩阵,这个操作就相当于 np.sum(X * y, axis=0)
。
那么,对于稀疏矩阵,有什么高效的方法可以做到这一点呢?
我试过:
z = np.zeros(X.shape[1])
for i in range(X.shape[1]):
z[i] = np.sum(np.array(X[:, i]) * y)
但是速度非常慢。
有没有更好的方法来实现这个呢?
1 个回答
2
使用为稀疏矩阵提供的 dot
乘法:
X.transpose().dot(y)
这样会更快。
另外要注意,你不能像你在例子中那样直接访问稀疏矩阵的元素。你需要使用 getcol
方法。