一种获取pythons scipy模块的coo_matrix中非零值计数的方法?

Auf*_*ind 4 python count scipy sparse-matrix

我想使用coo_matrix.nonzero()哪个返回两个数组的元组,其中包含给定矩阵中非零指数的索引.文档中的示例指出:

>>> from scipy.sparse import coo_matrix
>>> A = coo_matrix([[1,2,0],[0,0,3],[4,0,5]])
>>> nonzero_entrys = A.nonzero()
(array([0, 0, 1, 2, 2]), array([0, 1, 2, 0, 2]))
Run Code Online (Sandbox Code Playgroud)

然后我会做类似的事情,len(nonzero_entrys[0])但这似乎是一种转移.我在文档中忽略了一种更好的方法吗?

unu*_*tbu 5

你可以len(A.data)改用.


Fra*_*sco 5

coo_matrix 对象有一个属性,专门给出非零值,称为.nzz

例如,生成一个 5x5 的识别矩阵。

sparse = scipy.sparse.coo_matrix(np.diag(np.ones(5)))
sparse.nnz
5
Run Code Online (Sandbox Code Playgroud)

您可以阅读有关它的更多信息并通过执行找到其他方便的属性 help(scipy.sparse.coo_matrix)