最近在阅读文献的时候,遇到了 CSR、CSC 等稀疏矩阵存储格式,又从网上查了查,在此整理一下。
本博文借鉴了
https://blog.csdn.net/wangjian1204/article/details/52149199
常用的三种存储格式:COO(Coordinate Format),CSR(Compressed Sparse Row),CSC(Compressed Sparse Column)。为了表示存储空间,设非零值个数为 k。
1、COO
使用(行下标,列下标,数值)的三元组来表示非零元素。
存储空间:3*k
2、CSR
CSR 的列下标与 COO 一致,将行下标进行压缩,压缩后的行下标只表示在哪个位置换行即可。
例如,
则用 CSR 表示为
其中,row 中第 i 个元素表示在 value[row[i]] 处换行。
存储空间:2*k+n+1,其中 n 为行数。
3、CSC
与 CSR 类似,只不过需要将 value 从按行排序改为按列排序。
还是看上面的例子,用 CSC 表示为
存储空间:2*k+n+1,其中 n 为列数。