压缩行稀疏矩阵(CSR)格式是一种特殊的矩阵存储格式,其特点是只存储非零元素的值、行号和列指针。本质上是一种三元组表示法。

标准代码如下

def compressed_row_sparse_matrix(dense_matrix):
    vals = []
    col_idx = []
    row_ptr = [0]

    for row in dense_matrix:
        for j, val in enumerate(row):
            if val != 0:
                vals.append(val)
                col_idx.append(j)
        row_ptr.append(len(vals))

    return vals, col_idx, row_ptr

除此之外,还可以使用scipy库中的csr_matrix函数来实现压缩行稀疏矩阵的存储。

def compressed_row_sparse_matrix(dense_matrix):
    from scipy.sparse import csr_matrix
    sparse = csr_matrix(dense_matrix)
    return sparse.data.tolist(), sparse.indices.tolist(), sparse.indptr.tolist()