稀疏或密集存储矩阵

时间:2014-08-26 03:25:15

标签: python-2.7 numpy matrix scipy sparse-matrix

我正在使用不是非常稀疏的大型稀疏矩阵,而且我总是想知道将稀疏的矩阵存储需要多少稀疏才有益?我们知道,相当密集的矩阵的稀疏表示可能比原始矩阵具有更大的尺寸。那么矩阵的密度是否存在阈值,以便将其存储为稀疏?我知道这个问题的答案通常取决于稀疏性的结构等,但我想知道是否只有一些指导方针?例如,我有一个非常大的矩阵,密度约为42%。我应该将此矩阵存储为密集还是稀疏?

1 个答案:

答案 0 :(得分:2)

scipy.coo_matrix格式将矩阵存储为3 np.arraysrowcol是整数索引,data与等效密集矩阵具有相同的数据类型。所以应该直接计算它将作为整体形状和稀疏度(以及数据类型)的函数所需的内存。

csr_matrix可能更紧凑。 dataindicescoo相同,但indptr每行的值加1.我认为indptr会比indptr更短其他人,但我只是构建了一个较长的小矩阵。例如,空行需要data中的值,但indicescsc中没有值。这种格式的重点是计算效率。

{{1}}类似,但使用列。再次,您应该能够计算这个大小。

简要讨论MATLAB的内存优势(使用类似的存储选项) http://www.mathworks.com/help/matlab/math/computational-advantages.html#brbrfxy

MATLAB设计人员的背景文件 http://www.mathworks.com/help/pdf_doc/otherdocs/simax.pdf MATLAB中的稀疏矩阵:设计与实现