2012-07-27 31 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 

(這顯然適用於乘法和其它操作保持稀疏,但不是加法等)