如何获得Python SciPy模块中coo_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]))
然后我会做类似 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)
来代替。