如何表示csr中的空行?
假设我们有以下矩阵:
* MATRIX 1 *
a 0 0
0 b 0
0 0 c
val = [ a b c ]
col = [ 0 1 2 ]
row = [ 0 1 2 ] <- makes sense!
—————————————————————
* MATRIX 2 *
a b c
0 0 0
0 0 0
val = [ a b c ]
col = [ 0 1 2 ]
row = [ 0 ] <— makes sense…? but how about…
—————————————————————
* MATRIX 3 *
0 0 0
a b c
0 0 0
val = [ a b c ]
col = [ 0 1 2 ]
row = [ 0 ] <— wait… how do we differentiate between MATRIX 2 and MATRIX 3?
MATRIX 1
是直观的,但是我们如何表示MATRIX 2
和MATRIX 3
之间的区别呢?我们用负整数来表示间距吗?谢谢
最佳答案
看看The Wikipedia page。IA
向量(或您称之为“行”)定义为:
阵列IA的长度为m+1它由以下递归定义定义:
Ia[0]=0
ia[i]=ia[i-1]+(原始矩阵第(i-1)行上的非零元素数)
因此,IA的前m个元素将索引存储到m的每行中第一个非零元素的A中,而最后一个元素IA[m]存储NNZ,即A中元素的数量这也可以被认为是在矩阵m的末尾之后的幻象行的第一个元素的a中的索引。原始矩阵的第i行的值从元素a[ia[i]]读取到a[ia[i+1]-1%(两端都包括),即从一行的开始到下一行开始之前的最后一个索引。
因此,在矩阵1中:row = [0 1 2 3]
在矩阵2中:row = [0 3 3 3]
在矩阵3中row = [0 0 3 3]
关于algorithm - 压缩稀疏行(CSR):如何存储空行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43771387/