matrix - 稀疏矩阵存储格式 - 转换

标签 matrix sparse-matrix

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

最佳答案

看看 Yousef Saad 的图书馆 SPARSKIT -- 他有子例程可以在压缩稀疏行和坐标格式之间来回转换,以及其他几种稀疏矩阵存储方案。

无论如何,要了解如何从压缩格式中获取坐标格式,最简单的方法是首先考虑如何提出压缩行格式。假设您在 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)告诉你数组中的起始地址 cols对于行i 。在上面的示例中,我们将有

ia  : 1  5  10  ...
cols: 1  3  5  9  2  3  7  9  11 1  2  3 ...

要从 COO 转变为 CSR,我们只需利用以下事实

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

对于任何 i。知道了这一点,您就可以逆向工作以从 CSR 获取 COO 格式。

关于matrix - 稀疏矩阵存储格式 - 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013342/

相关文章:

c - 如何获得每个骨骼的绝对矩阵?

c++ - OpenCL:根据 local_item_size 混淆结果

c++ - Eigen :比较两个可能具有不同稀疏模式的稀疏矩阵

r - 使用 NA 默认条目创建(和访问)稀疏矩阵

python - 将 CountVectorizer 和 TfidfTransformer 稀疏矩阵转换为单独的 Pandas Dataframe 行

java - SparseArray 对于资源 id 键有好处吗?

performance - 对于小矩阵,纯 Haskell 比 HMatrix 快 10 到 100 倍?

R特征哈希: extra value in hashed.模型.矩阵

c++ - matrix = *((fxMatrix*)&d3dMatrix);//邪恶?

python - 如何在Python中向稀疏矩阵添加稀疏行?