对csr格式的scipy稀疏矩阵中行的操作

时间:2012-07-27 12:40:19

标签: python numpy scipy

我想将csr矩阵的单行与标量相乘。在numpy我会做

matrix[indices,:] = x * matrix[indices,:]

对于csr,这会在scipy中引发异常。

有没有办法用csr矩阵类似地做到这一点?

1 个答案:

答案 0 :(得分:12)

不,没有办法直接这样做,因为虽然您可以计算row * x,但您无法分配到CSR矩阵中的行。您可以转换为DOK格式并返回,或直接处理CSR矩阵的内部。 CSR矩阵i的{​​{1}}行是切片

X

你可以就地更新,即

X.data[X.indptr[i] : X.indptr[i + 1]]

(这显然适用于乘法和其他保留稀疏性的操作,但不适用于添加。)