0

scipyにcsr_matrixとして実装されているスパース行列形式を使用しています。csr_matrix形式のmat変数があり、そのすべての要素が非負です。ただし、マット+マット操作を使用すると、ゼロ以外の要素数が減少するため、非常に奇妙です。必要なのは要素ごとの加算ですが、各要素が非負であるため、非要素数が減少するのはなぜですか。

よろしくお願いします

4

2 に答える 2

1

in SciPyのnnzメンバーはcsr_matrix明示的なゼロをカウントするため、マトリックスの作成方法によっては、これが観察対象を説明する場合があります。この動作は、行列に明示的にゼロを設定することで確認できます。

>>> from scipy.sparse import csr_matrix
>>> A = csr_matrix((5, 5))
>>> A.nnz
0
>>> A[0, 0] = 0
>>> A.nnz
1
>>> A[1,1] = 0
>>> A.nnz
2

これで、新しい行列を作成する操作(行列の加算など)を実行すると、明示的なゼロは保持されません。

>>> B = A + A
>>> B.nnz
0
于 2012-07-06T06:01:21.373 に答える
0

それは少しやり過ぎで関連性がないかもしれませんが、これらの2つのライブラリを調べる価値があるかもしれません

petsc4py

petsc

考えられるスパース行列の問題をほぼ解決します

于 2012-07-06T06:44:59.210 に答える