首页 > 试题广场 >

实现压缩列稀疏矩阵

[编程题]实现压缩列稀疏矩阵
  • 热度指数:599 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现一个函数来将密集矩阵(dense matrix)转换为压缩列稀疏(Compressed Column Sparse, CCS)格式。CCS是一种高效存储稀疏矩阵的方法,只存储非零元素及其位置信息。

CCS格式由三个数组组成:
1. values:按列优先顺序存储的非零元素值
2. row_indices:每个非零元素对应的行索引
3. column_pointer:指示每列起始位置的指针数组

输入描述:
输入为一个二维列表dense_matrix,表示待转换的密集矩阵。


输出描述:
输出三个列表,分别表示:
1. values:所有非零元素值的列表,按列优先顺序排列
2. row_indices:对应每个非零元素的行索引
3. column_pointer:每列在values数组中的起始位置索引(包含最后一列结束位置)
示例1

输入

[[1, 0, 0], [2, 3, 0], [0, 4, 5]]

输出

[1, 2, 3, 4, 5]
[0, 1, 1, 2, 2]
[0, 2, 4, 5]

备注:
1.对应的输入、输出已给出,您只用实现核心功能函数即可。
2.支持numpy、scipy、pandas、scikit-learn库。
from scipy.sparse import csc_matrix
def compressed_col_sparse_matrix(dense_matrix):
     csc=csc_matrix(dense_matrix)
     return csc.data.tolist(),csc.indices.tolist(),csc.indptr.tolist()  

if __name__ == "__main__":
    dense_matrix = eval(input())
    vals, row_idx, col_ptr = compressed_col_sparse_matrix(dense_matrix)
    print(vals)
    print(row_idx)
    print(col_ptr)
发表于 2026-04-19 15:35:07 回复(0)