scipy.sparse.coo_array.
count_nonzero#
- coo_array.count_nonzero(axis=None)[源代码]#
非零条目的数量,等效于
np.count_nonzero(a.toarray(), axis=axis)
与返回存储条目数量(data 属性的长度)的 nnz 属性不同,此方法计算 data 中实际的非零条目数量。
在计数之前,重复的条目会被求和。
- 参数:
- axis{-2, -1, 0, 1, None} 可选
计算整个数组或指定轴的非零值。
在 1.15.0 版本中添加。
- 返回:
- numpy 数组
一个缩减的数组(没有轴 axis),保存非轴维度的每个索引的非零值数量。
注意
如果你想计算沿轴的非零值和显式存储的零值(例如 nnz),
numpy
函数为常见的 CSR、CSC、COO 格式提供了两种快速方法。对于 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 的 minlength 为A.shape[1]
,CSC 的 minlength 为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])