鉴于找遍全网没有一个人能清楚解释CSR矩阵压缩表示法中的indptrs具体代表啥意思,花了半天时间总算研究明白,记录下。
先看看网上随便能搜到的解释:

CSR是比较标准的一种,也需要三类数据来表达:数值,列号,以及行偏移。CSR不是三元组,而是整体的编码方式。数值和列号与COO一致,表示一个元素以及其列号,行偏移表示某一行的第一个元素在values里面的起始偏移位置。如上图中,第一行元素1是0偏移,第二行元素2是2偏移,第三行元素5是4偏移,第4行元素6是7偏移。在行偏移的最后补上矩阵总的元素个数,本例中是9。
CSC是和CSR相对应的一种方式,即按列压缩的意思。
以上图中矩阵为例:
Values: [1 5 7 2 6 8 3 9 4]
Row Indices:[0 2 0 1 3 1 2 2 3]
Column Offsets:[0 2 4 7 9]
这里“行偏移表示某一行的第一个元素在values里面的起始偏移位置”非常关键,也让我费解半天,其实为何不在图中标示出来呢?

图中就是row offsets的来源,每一行第一个元素的在values中的索引位置。
本文详细探讨了CSR(Coordinate Storage Row)矩阵压缩表示法中的indptrs(行指针)概念。作者指出,indptrs关键在于指示每一行在values数组中的起始位置。通过实例解释,第一行的起始位置为0,第二行为2,以此类推,帮助读者清晰理解这一数据结构。此外,文章还对比了CSR和CSC(Compressed Sparse Column)两种压缩方式。
7860

被折叠的 条评论
为什么被折叠?



