我想将 csr 矩阵的单行与标量相乘。在 numpy 中我会做
matrix[indices,:] = x * matrix[indices,:]
对于 csr,这会在 scipy 中引发异常。
有没有办法用 csr 矩阵类似地做到这一点?
最佳答案
不,没有办法直接做到这一点,因为虽然您可以计算 row * x
,但您不能分配给 CSR 矩阵中的一行。您可以转换为 DOK 格式并返回,或者直接处理 CSR 矩阵的内部结构。 CSR 矩阵 X
的第 i
行是切片
X.data[X.indptr[i] : X.indptr[i + 1]]
您可以就地更新,即
X.data[X.indptr[i] : X.indptr[i + 1]] *= factor
(这显然适用于乘法和其他保留稀疏性的操作,但不适用于加法之类的操作。)
关于python - 对 csr 格式的 scipy 稀疏矩阵中的行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687953/