题解|实现压缩行稀疏矩阵格式转换
实现压缩行稀疏矩阵(CSR)格式转换
https://www.nowcoder.com/practice/29f0ddee6cd54906928ce500be7c8927?tpId=377&tags=&title=&difficulty=&judgeStatus=&rp=0&sourceUrl=%2Fexam%2Foj&gioEnter=menu
压缩行稀疏矩阵(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()
