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