4

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

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

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

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

4

1 回答 1

12

不,没有办法直接做到这一点,因为虽然你可以计算row * x,但你不能分配给 CSR 矩阵中的一行。您可以转换为 DOK 格式并返回,也可以直接处理 CSR 矩阵的内部结构。CSR 矩阵的第i' 行X是切片

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

您可以就地更新,即

X.data[X.indptr[i] : X.indptr[i + 1]] *= factor

(这显然适用于保持稀疏性的乘法和其他运算,但不适用于加法。)

于 2012-07-27T14:19:55.020 回答