scipy.sparse.csr_matrix.

count_nonzero#

csr_matrix.count_nonzero(axis=None)[source]#

非零条目的数量,等同于

np.count_nonzero(a.toarray(), axis=axis)

与 nnz 属性不同,该属性返回存储条目的数量(数据属性的长度),此方法计算数据中实际的非零条目数量。

重复条目在计数之前会被求和。

参数:
axis{-2, -1, 0, 1, None} 可选

计算整个数组的非零值,或沿指定轴计算。

1.15.0 版本中新增。

返回:
numpy 数组

一个缩减的数组(没有轴 axis),其中包含非轴维度每个索引的非零值数量。

注释

如果想计算非零值和显式存储的零值(例如 nnz)沿轴的数量,对于常见的 CSR、CSC、COO 格式,numpy 函数提供了两种快速的习语。

对于 CSR(行)和 CSC(列)中的主轴,请使用 np.diff

>>> import numpy as np
>>> import scipy as sp
>>> A = sp.sparse.csr_array([[4, 5, 0], [7, 0, 0]])
>>> major_axis_stored_values = np.diff(A.indptr)  # -> np.array([2, 1])

对于 CSR(列)和 CSC(行)中的次轴,请使用 numpy.bincount,最小长度为 CSR 的 A.shape[1] 和 CSC 的 A.shape[0]

>>> csr_minor_stored_values = np.bincount(A.indices, minlength=A.shape[1])

对于 COO,对于任何 axis,都使用次轴方法

>>> A = A.tocoo()
>>> coo_axis0_stored_values = np.bincount(A.coords[0], minlength=A.shape[1])
>>> coo_axis1_stored_values = np.bincount(A.coords[1], minlength=A.shape[0])

示例

>>> A = sp.sparse.csr_array([[4, 5, 0], [7, 0, 0]])
>>> A.count_nonzero(axis=0)
array([2, 1, 0])