2012-07-27 81 views
4

我想用标量乘以csr矩阵的单行。在numpy我会做对csr格式的scipy稀疏矩阵的行操作

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

对于csr这引起了scipy的例外。

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

+0

效率低下?在我的SciPy 0.7.2上,这引发了一个例外。 – 2012-07-27 13:32:33

+0

对不起,我说不清楚。编辑。 – 2012-07-27 14:07:22

回答

12

不,没有办法直接这样做,因为尽管您可以计算row * x,但不能指定给CSR矩阵中的一行。您可以转换为DOK格式并返回,或直接在CSR矩阵的内部工作。该i“日企业社会责任矩阵X的排片

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

,你可以就地更新,即

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

(这显然适用于乘法和其它操作保持稀疏,但不是加法等)