压缩行稀疏矩阵(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()