def _copy_nbrs(src: matrix._CSR, dst: matrix._CSR, limits, thresh: float): "Copy neighbors into the output matrix." used = np.zeros(dst.nrows, dtype=np.int32) for i in range(src.nrows): sp, ep = src.row_extent(i) for j in range(sp, ep): c = src.colinds[j] v = src.values[j] if c != i and v >= thresh: _insert(dst, used, limits, i, c, v) return used
def _count_nbrs(mat: matrix._CSR, thresh: float): "Count the number of neighbors passing the threshold for each row." counts = np.zeros(mat.nrows, dtype=np.int32) cs = mat.colinds vs = mat.values for i in range(mat.nrows): sp, ep = mat.row_extent(i) for j in range(sp, ep): c = cs[j] v = vs[j] if c != i and v >= thresh: counts[i] += 1 return counts