我想知道是否存在一个运算符,用于在scipy.sparse库中使用向量的稀疏矩阵的行元素乘法。 numpy数组类似于A * b的东西?感谢。
答案 0 :(得分:2)
使用multiply
方法:
In [15]: a
Out[15]:
<3x5 sparse matrix of type '<type 'numpy.int64'>'
with 5 stored elements in Compressed Sparse Row format>
In [16]: a.A
Out[16]:
array([[1, 0, 0, 2, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 4, 5]])
In [17]: x
Out[17]: array([ 5, 10, 15, 20, 25])
In [18]: a.multiply(x)
Out[18]:
matrix([[ 5, 0, 0, 40, 0],
[ 0, 0, 45, 0, 0],
[ 0, 0, 0, 80, 125]])
请注意,如果x
是常规numpy数组(ndarray
),则结果不是稀疏矩阵。首先将x
转换为稀疏矩阵以获得稀疏结果:
In [32]: xs = csr_matrix(x)
In [33]: y = a.multiply(xs)
In [34]: y
Out[34]:
<3x5 sparse matrix of type '<type 'numpy.int64'>'
with 5 stored elements in Compressed Sparse Row format>
In [35]: y.A
Out[35]:
array([[ 5, 0, 0, 40, 0],
[ 0, 0, 45, 0, 0],
[ 0, 0, 0, 80, 125]])