Matrix 稀疏矩阵存储格式.转换

Matrix 稀疏矩阵存储格式.转换,matrix,sparse-matrix,Matrix,Sparse Matrix,是否有一种将压缩行存储(CRS)格式的稀疏矩阵转换为坐标列表(COO)格式的有效方法 看看Yousef Saad的库——他有一些子程序可以在压缩的稀疏行和坐标格式之间来回转换,还有一些其他稀疏矩阵存储方案 无论如何,为了查看如何从压缩的数据中获得坐标格式,最简单的是首先考虑如何生成压缩的行格式。例如,假设你在COO中有一个稀疏矩阵,你已经把所有事情都安排好了 rows: 1 1 1 1 2 2 2 2 2 3 3 3 ... cols: 1 3 5 9 2 3

是否有一种将压缩行存储(CRS)格式的稀疏矩阵转换为坐标列表(COO)格式的有效方法

看看Yousef Saad的库——他有一些子程序可以在压缩的稀疏行和坐标格式之间来回转换,还有一些其他稀疏矩阵存储方案

无论如何,为了查看如何从压缩的数据中获得坐标格式,最简单的是首先考虑如何生成压缩的行格式。例如,假设你在COO中有一个稀疏矩阵,你已经把所有事情都安排好了

rows: 1  1  1  1  2  2  2  2  2  3  3  3 ...
cols: 1  3  5  9  2  3  7  9  11 1  2  3 ...
因此,第1行中的非零条目是(1,1)、(1,3)、(1,5)、(1,9)等等。在行数组中存储了大量冗余数据;您可以使用数组
ia
,以便
ia(i)
告诉您行
i
的数组
cols
中的起始地址。在上面的例子中,我们将

ia  : 1  5  10  ...
cols: 1  3  5  9  2  3  7  9  11 1  2  3 ...
从首席运营官到企业社会责任,我们只是利用以下事实

ia(i+1) = ia(i) + number of non-zero entries in row i

对任何我来说。知道了这一点,您就可以从CSR获得COO格式。

Hi!谢谢你,我昨天也想出了一个类似的解决方案。在CSR中,值是按行排序的,而且我们已经知道每行中非零的数量。我使用了一个计数器,每行递增到非零的数量,然后重置。此时,行数增加1。每行都会重复整个过程。这就是我们为矩阵中的每个元素提供(行、列、值)的方法,我们可以在线性时间内构建COO格式。