压缩列稀疏矩阵是一种特殊的矩阵,其特点是矩阵中大部分元素为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()