4

csr 行列の単一の行にスカラーを掛けたいと思います。numpyで私はするだろう

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

csr の場合、これにより scipy で例外が発生します。

csrマトリックスでこれを同様に行う方法はありますか?

4

1 に答える 1

12

いいえ、これを直接行う方法はありません。計算row * xはできますが、CSR マトリックスの行に割り当てることはできないからです。DOK 形式に変換して元に戻すか、CSR マトリックスの内部で直接作業することができます。iCSR マトリックスの'th 行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 に答える