首页 > 试题广场 >

实现压缩列稀疏矩阵

[编程题]实现压缩列稀疏矩阵
  • 热度指数: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库。
头像 马保深
发表于 2026-04-19 15:34:57
from scipy.sparse import csc_matrix def compressed_col_sparse_matrix(dense_matrix): csc=csc_matrix(dense_matrix) return csc.data.tolist(),cs 展开全文
头像 牛客题解官
发表于 2025-02-05 12:54:59
压缩列稀疏矩阵是一种特殊的矩阵,其特点是矩阵中大部分元素为0。 在本题中,提到的CCS格式是一种压缩列稀疏矩阵的存储格式,其特点是只存储非零元素的值、行号和列指针。若学过数据结构,可以知道这是一种三元组表示法。 标准代码如下 def compressed_col_sparse_matrix(dens 展开全文
头像 yuncongliu
发表于 2025-05-16 15:38:23
def compressed_col_sparse_matrix(dense_matrix): vals = [] row_idx = [] cnt = [0 for _ in range(len(dense_matrix[0]) + 1)] col_ptr = [ 展开全文
头像 咩咩食人鱼
发表于 2026-01-15 08:53:18
import numpy as np from scipy.sparse import csc_matrix def compressed_col_sparse_matrix(dense_matrix): dense_np=np.array(dense_matrix) csc=csc 展开全文
头像 牛客838487852号
发表于 2025-07-25 11:01:06
def compressed_col_sparse_matrix(dense_matrix): dense_matrix_T = [list(a) for a in zip(*dense_matrix)] vocter = [item for sublist in dense_mat 展开全文