将稀疏矩阵转储到文件中
Posted
技术标签:
【中文标题】将稀疏矩阵转储到文件中【英文标题】:Dump a sparse matrix into a file 【发布时间】:2011-08-30 13:26:00 【问题描述】:我有一个scipy.sparse.csr 矩阵,想将其转储到 CSV 文件中。有没有办法保持矩阵的稀疏性并将其写入 CSV?
【问题讨论】:
你打算如何使用稀疏的 CSV 文件?读取 CSV 文件的现有程序将假定每行包含一行,并且字段用逗号分隔。也许压缩文件可以得到你想要的。 我将它用于另一项任务。 CSV 可能是错误的选择。我想要一个文本文件,对于矩阵中的每一行,我只得到非零值的值。目前,我已经使用一些代码完成了这项工作。我只是想知道它是否可以更智能地完成。 【参考方案1】:SciPy 包括通过 scipy.io module 以 MatrixMarket 格式读取/写入稀疏矩阵的函数,包括 mmwrite:http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.mmwrite.html
MatrixMarket 不是 CSV,而是关闭的。它由一个包含#rows、#cols、# of nonzeros 的单行标题组成,然后是每个非零的一行。这些行中的每一行都是行索引、列索引、值。您可以编写一个将空格转换为逗号的简单脚本,然后您将拥有一个 CSV。
【讨论】:
【参考方案2】:现在有了 Scipy 0.19,这超级简单:
import scipy.sparse as sp
m = sp.csr_matrix([[1,0,0],[0,1,0],[0,0,1]])
sp.save_npz("file_name.npz", m)
加载文件到内存
new_m = sp.load_npz("file_name.npz")
【讨论】:
以上是关于将稀疏矩阵转储到文件中的主要内容,如果未能解决你的问题,请参考以下文章