如何获得Python SciPy模块中coo_matrix非零值的计数?

5 投票
2 回答
2380 浏览
提问于 2025-04-17 00:30

我想到了使用 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]))

然后我会做类似 len(nonzero_entrys[0]) 的操作,但这似乎有点偏离主题。我是不是在文档中忽略了更好的方法呢?

2 个回答

5

coo_matrix对象有一个专门用来表示非零值的属性,叫做.nzz

举个例子,生成一个5x5的单位矩阵。

sparse = scipy.sparse.coo_matrix(np.diag(np.ones(5)))
sparse.nnz
5

你可以通过输入help(scipy.sparse.coo_matrix)来了解更多信息,找到其他有用的属性。

6

你可以用 len(A.data) 来代替。

撰写回答