我正在处理不是非常稀疏的大型稀疏矩阵,我总是在想,需要多少稀疏性才能将矩阵存储为稀疏矩阵才是有益的?我们知道,一个相当密集的矩阵的稀疏表示可以具有比原始矩阵更大的大小。那么,矩阵的密度是否有一个阈值,以便更好地将其存储为稀疏矩阵?我知道这个问题的答案通常取决于稀疏性的结构,等等,但我想知道是否有一些指导原则?例如,我有一个非常大的矩阵,密度约为42%。我应该将这个矩阵存储为密集的还是稀疏的?
发布于 2014-08-26 12:18:39
scipy.coo_matrix格式将矩阵存储为3 np.arrays。row和col是整数索引,data具有与等价密集矩阵相同的数据类型。因此,应该直接计算作为整体形状和稀疏度(以及数据类型)的函数的内存。
csr_matrix可能更紧凑。data和indices与coo相同,但是indptr的每一行都有一个值加1。我认为indptr会比其他的更短,但我只是在它更长的地方构造了一个小矩阵。例如,空行需要indptr中的值,但不需要data或indices中的值。这种格式的重点是计算效率。
csc与此类似,但使用的是列。同样,您应该能够通过数学计算出这个大小。
浅谈MATLAB的内存优势(使用类似的存储选项) http://www.mathworks.com/help/matlab/math/computational-advantages.html#brbrfxy
MATLAB designers的背景文件http://www.mathworks.com/help/pdf_doc/otherdocs/simax.pdf SPARSE MATLAB IN MATLAB:设计与实现
https://stackoverflow.com/questions/25497544
复制相似问题