首页 文章

稀疏或密集存储矩阵

提问于
浏览
2

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

1 回答

  • 2

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

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

    csc 类似,但使用列 . 再次,你应该能够计算这个大小的数学 .

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

    MATLAB设计人员的背景文件http://www.mathworks.com/help/pdf_doc/otherdocs/simax.pdf MATLAB中的SPARSE MATRICES:设计和实现

相关问题