矩阵格式之OOO、CSR和CRC (Compressed Storage Row/Column )

1. COO:

  • 1、COO:Coordinate Format 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]                         // 表示各列的非零元素在第二行数组中的起始位置 

 

 

 

 

你可能感兴趣的:(矩阵格式之OOO、CSR和CRC (Compressed Storage Row/Column ))