我想知道是否有办法简单地将一个密集向量添加到csr_matrix
中表示为scipy.sparse
的稀疏矩阵的所有行并返回一个稀疏矩阵,即尝试求和只有稀疏矩阵的非零元素。
如果我这样做:
import numpy as np
import scipy.sparse as sp
W = sp.csr_matrix(np.array([[0,0,1],[0,1,0]]))
v = np.array([2,3,4])
然后
sum = W + v
sum
显然是一个密集的矩阵,但零数也相加。然而,当我尝试做的时候:
b = (W != 0)
s = b.multiply(v)
sum = W + s
我获得了正确的结果,但是作为一个密集的矩阵。 b
是一个稀疏矩阵,但s
不是。
答案 0 :(得分:2)
正如我在评论中所说的那样,问题出现在multiply
中,它应该为稀疏+密集输入生成稀疏矩阵,但不会。转换为稀疏格式以避免该问题:
>>> s = (W != 0).multiply(sp.csr_matrix(v))
>>> W + s
<2x3 sparse matrix of type '<type 'numpy.int64'>'
with 2 stored elements in Compressed Sparse Row format>