上图为 稀疏矩阵的CSR表示方法,
value 是原矩阵中的非0值。
column indices 是 value 值对应的列 。
row offsets 是指 原矩阵中每一行的第一个非0值 现在所在value中的偏移值,也可理解为value数组中的位置。
如: 从 # row +1 数组看,第 0 行 的第一个非零值在value中的位置为第 0 个 该值为 1 , 它对应的列是 第 0 列 。
#row+1 中 第 1 行的第一个非零值是value中的位置2 该值为2, 对应列为 第1列。
#row+1 中 第 2 行 的第一个非零值是 value中的位置 4 该值为 5 ,对应列为 第0列。
…
#row+1 中的最后一个值为 9, 指的是value值一共有 9 个。
现在每一行的第一个非零值都找到了 ,那么每一行的第二个 第三个 …非零值也就很好找了。
我们只需要看后两个数组。
因为 value里的 1 和 2 是第 0、第 1 行的第一个非零值 ,那么夹在中间的 7 肯定就是 第 0 行的第二个非零值了 ,对应的列从column indices看出为 第 1 列。 其余同理
如果 两者之间有多个非零值,如 5 和 6 中间有 3 和 9 ,其确切的位置顺序也同样由column indices来决定。