1. COO:
比如矩阵:
[4, 0, 0, 2]
[0, 1, 0, 0]
[0, 0, 5, 7]
[6, 3, 0, 8]
可表示为三个数组:
[0,0,1,2,2,3,3,3]
[0,3,1,2,3,0,1,3]
[4,2,1,5,7,6,3,8]
对于点2,对应三个数组的第一列,即 <0, 3, 2 >, 即0行,3列,值2.
2. CSR
比如矩阵:
[4, 0, 0, 2]
[0, 1, 0, 0]
[0, 0, 5, 7]
[6, 3, 0, 8]
可表示为:
[4,2,1,5,7,6,3,8] //本行表示值
[0,3, || 1, || 2,3, || 0,1,3] //本行表示每行的非零元素的列位置,
[0, || 2, || 3, ||5,8] //本行表示第二行数组的起始位置
参考: https://zsp.iteye.com/blog/275298
http://www.netlib.org/utk/people/JackDongarra/etemplates/node373.html
https://www.cnblogs.com/rollenholt/p/5960523.html(使用Spark表示稀疏矩阵的API,存疑)
3. CSC:
与CSR类似,只是CSR中的R是ROW(行),CSC中的C是COLUMN,是列,
比如矩阵:
[4, 0, 0, 2]
[0, 1, 0, 0]
[0, 0, 5, 7]
[6, 3, 0, 8]
可表示为:
[4,6,1,3,5,2,7,8] // 本行按列表示值
[0,3,|| 1,3,|| 2 ,|| 0,2,3] // 表示按列划分,每列非零元素的位置
[ 0, || 2, || 4, ||5,8] // 表示各列的非零元素在第二行数组中的起始位置