#COO Matrix

最简单一种格式,每一个元素需要用一个三元组来表示,分别是(行号,列号,数值),这种方式简单,但是记录单信息多(行列),每个三元组自己可以定位,因此空间不是最优。
优点:
- 
容易构造,比较容易转换成其他的稀疏矩阵存储格式(CSR等) 
- 
写程序可以将 libsvm 格式的数据转换成 COO 比较容易,应该是充当 libsvm 与其他稀疏矩阵存储格式转换的媒介。 
- 
支持相同的(row,col)坐标上存放多个值。 
缺点:
- 
构建完成后不允许再插入或删除元素。不能进行常规矩阵运算。 
- 
不能直接进行科学计算和切片操作。 
#CSR Matrix

比较标准,数值,列号,以及行偏移。 (相当于每行的首个元素在 value 中的 index) row offset 的数值个数是 row + 1, 表示某行第一个元素在 values 中的位置,如 5 是第三行第一个元素,它在 values 中的 index 是 4。
优点:
- 
高效地按行切片。 
- 
快速地计算矩阵与向量的内积。 
- 
高效地进行矩阵的算术运行,CSR + CSR、CSR * CSR等。 
缺点:
- 
按列切片很慢(考虑 CSC) 
- 
一旦构建完成后,再往里面添加或删除元素成本很高 
- 
CSR 格式在存储稀疏矩阵时非零元素平均使用的字节数(Bytes per Nonzero Entry)最为稳定(float 类型约为 8.5,double类型约为 12.5)。CSR 格式常用于读入数据后进行稀疏矩阵计算。 
#CSC Matrix

CSC 是和 CSR 相对应的一种方式,即按列压缩的意思。