获得大型稀疏矩阵的每行最大值的有效方法

han*_*ang 6 python scipy sparse-matrix

我有一个大的稀疏矩阵,我想获得每一行的最大值.在numpy中,我可以调用numpy.max(mat,axis = 1),但是我找不到scipy稀疏矩阵的类似函数.有没有有效的方法来获得大型稀疏矩阵的每一行的最大值?

Jai*_*ime 4

如果您的矩阵(我们称之为 )a以 CSR 格式存储,则a.data所有非零条目均按行排序,并且a.indptr具有每行第一个元素的索引。您可以使用它来计算您想要的内容,如下所示:

def sparse_max_row(csr_mat):
    ret = np.maximum.reduceat(csr_mat.data, csr_mat.indptr[:-1])
    ret[np.diff(csr_mat.indptr) == 0] = 0
    return ret
Run Code Online (Sandbox Code Playgroud)