csr 行列の単一の行にスカラーを掛けたいと思います。numpyで私はするだろう
matrix[indices,:] = x * matrix[indices,:]
csr の場合、これにより scipy で例外が発生します。
csrマトリックスでこれを同様に行う方法はありますか?
いいえ、これを直接行う方法はありません。計算row * x
はできますが、CSR マトリックスの行に割り当てることはできないからです。DOK 形式に変換して元に戻すか、CSR マトリックスの内部で直接作業することができます。i
CSR マトリックスの'th 行X
はスライスです
X.data[X.indptr[i] : X.indptr[i + 1]]
インプレースで更新できます。
X.data[X.indptr[i] : X.indptr[i + 1]] *= factor
(これは、スパース性を維持する乗算やその他の演算では明らかに機能しますが、加算などでは機能しません。)