scipy.sparse.csr_array.
count_nonzero#
- csr_array.count_nonzero(axis=None)[原始碼]#
非零條目的數量,等同於
np.count_nonzero(a.toarray(), axis=axis)
與 nnz 屬性(返回儲存條目的數量,即 data 屬性的長度)不同,此方法計算 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 設定A.shape[1]
的 minlength,為 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])