3

.dataof の値csr_matrixをゼロに設定すると、不快な動作が発生します。次に例を示します。

from scipy import sparse
a = sparse.csr_matrix([[0,0,2,0], [1,1,0,0],[0,3,0,0]])

出力:

>>> a.A
array([[0, 0, 2, 0],
       [1, 1, 0, 0],
       [0, 3, 0, 0]])
>>> a.data
array([2, 1, 1, 3])
>>> a.data[3] = 0   # setting one element to zero
>>> a.A
array([[0, 0, 2, 0],
       [1, 1, 0, 0],
       [0, 0, 0, 0]])
>>> a.data
array([2, 1, 1, 0]) # however, this zero is still considered part of data
                    # what I would like to see is:
                    # array([2, 1, 1])

>>> a.nnz           # also `nnz` tells me that there 4 non-zero elements 
                    # which is incorrect, I would like 3 as an output
4

>>> a.nonzero()     # nonzero method does follow the behavior I expected
(array([0, 1, 1], dtype=int32), array([2, 0, 1], dtype=int32))

上記の状況でのベストプラクティスは何ですか? の要素.dataをゼロに設定することは避けるべきですか? .nnzゼロの数を見つける信頼できない方法はありますか?

4

1 に答える 1