压缩列稀疏矩阵是一种特殊的矩阵,其特点是矩阵中大部分元素为0。

在本题中,提到的CCS格式是一种压缩列稀疏矩阵的存储格式,其特点是只存储非零元素的值、行号和列指针。若学过数据结构,可以知道这是一种三元组表示法。

标准代码如下

def compressed_col_sparse_matrix(dense_matrix):
    vals = []
    row_idx = []
    col_ptr = [0]

    rows, cols = len(dense_matrix), len(dense_matrix[0])

    for i in range(cols):
        for j in range(rows):
            val = dense_matrix[j][i]
            if val != 0:
                vals.append(val)
                row_idx.append(j)
        col_ptr.append(len(vals))

    return vals, row_idx, col_ptr

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

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