0
Iは(scipy.sparse.bmat
から作成される)coo
形式の行列A
有する:単一の操作のためにスパース構造を変更
A
<80000x80000 sparse matrix of type '<class 'numpy.float64'>'
with 278480 stored elements in COOrdinate format>
を私は
- 変更特定の行のすべての値を希望この行列の
spsolve(A, g)
一部についてはg
変更された行列上
今、coo
形式の行を変更することはできません。以下の作品:
AA = A.tocsr()
AA[10, :] = 1 # or whatever other array I want to put here
spsolve(AA, g)
が、私は今、私の知る限り理解し、lil_matrix
SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
SparseEfficiencyWarning)
を取得するには、線形代数を解決するのには非効率的である - 私はlil
にスパース構造を変更した場合でも、そうその後、csr
またはcsc
に変更されているはずです。
一般的に、その価値はありますか?私はここで作っているすべての操作をスピードアップしたくありません:「行間スライス」対「算術演算」のコストがどれほど高価であるかの大まかなルールはありますか?プログラマはどのようにしてこの種の問題に対処しますか?
あなたは常にあなた自身のタイミングを行うことができます。私の経験では、「効率的な警告」は主にあなたがループでこれをやめないようにするためのものです。このような1回の変更に対しては無視してください。 'lil'への変換はそれに値するものではありません。 – hpaulj