我有一个非常大的矩阵(比如10000x1000)存储在一个文件中。很明显,它需要很多无用的内存,因为它有很多零。
我在维基百科上找到了一种存储这种矩阵的方法:
https://en.wikipedia.org/wiki/sparse_matrix#compressed_sparse_row_(csr、\u crs\u或\u yale\u格式)
我能把三个数组连接到矩阵上。但现在我想做相反的事情:给定这三个数组,我想还原原始矩阵。我知道我应该把元素放在数组a的哪一列(在数组ja中给出),但我不知道应该把它们放在哪一行。
需要帮忙吗?
非常感谢。
1条答案
按热度按时间ffvjumwh1#
要计算出将它们放在哪一行,需要使用ia和a。
倒过来算一下清单
IA' = {IA[m+1] - IA[m], IA[m] - IA[m-1], IA[m-1] - IA[m-2],..., IA[2]-IA[1], IA[1]-IA[0]}
列表“ia”将告诉您要将a的多少个条目添加到矩阵的底行。你已经知道在哪里添加它们了,使用j。
所以呢
对于下面列出的wikipedia示例:
这意味着a的最后一个元素在最下面一行,倒数第二个元素在最上面一行,前两个元素在第三行。顶行没有条目。
将ia“转换为ia”可能会使实现更简单,因为您可以按以下方式处理行:
在第一行,0个条目。下一行有2个条目[5,3]。接下来的2个分别有1个条目,[3]和[6]。