【问题标题】:Dump a sparse matrix into a file将稀疏矩阵转储到文件中
【发布时间】:2011-08-30 13:26:00
【问题描述】:

我有一个scipy.sparse.csr 矩阵,想将其转储到 CSV 文件中。有没有办法保持矩阵的稀疏性并将其写入 CSV?

【问题讨论】:

  • 你打算如何使用稀疏的 CSV 文件?读取 CSV 文件的现有程序将假定每行包含一行,并且字段用逗号分隔。也许压缩文件可以得到你想要的。
  • 我将它用于另一项任务。 CSV 可能是错误的选择。我想要一个文本文件,对于矩阵中的每一行,我只得到非零值的值。目前,我已经使用一些代码完成了这项工作。我只是想知道它是否可以更智能地完成。

标签: python csv scipy sparse-matrix file-handling


【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2021-11-25
      • 2017-07-02
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多