【问题标题】:Save CSV to .MAT or binary将 CSV 保存为 .MAT 或二进制文件
【发布时间】:2014-01-16 01:47:05
【问题描述】:

我正在使用 Octave 并有一个大约 80 mb 的 .csv 文件要加载。

csvread() 需要很长时间才能加载。

如何将 csv 文件保存为 .mat 文件或二进制文件,或者至少加快 Octave csvread() 的速度?

提前谢谢你!

【问题讨论】:

    标签: optimization csv converter octave


    【解决方案1】:

    好吧,如果您也在使用 r,您可以执行以下操作:

    1. 在R中使用“read.csv”读取文件;
    2. 使用R包“R.matlab”编写“.mat”文件

    现在您可以在 Octave 中“更快”加载 .mat 文件,但第 1 步(“读取 csv”)也可能很慢;

    【讨论】:

      【解决方案2】:

      这是一个 python 版本(使用 numpy 和 scipy)。该程序有两个参数,输入 csv 文件(假设是所有数字数据,例如没有标题字符串)和 mat 文件的输出文件名。加载mat文件时,可以通过matlab变量名csvmatrix访问其中的数据。

      import csv  
      import sys
      import numpy
      import scipy.io
      
      if __name__ == "__main__":
          if len(sys.argv) != 3:
              print "Usage: %s input.csv output.mat" % sys.argv[0]
              sys.exit(-1)
      
          data = [ ]
          with open(sys.argv[1]) as f:
              reader = csv.reader(f)
              for row in reader:
                  rowData = [ float(elem) for elem in row ]
                  data.append(rowData)
      
          matrix = numpy.array(data)
          scipy.io.savemat(sys.argv[2], {'csvmatrix':matrix})
      

      【讨论】:

        【解决方案3】:

        我遇到过几次这个问题。我所做的可能很草率,但对我来说效果很好。我在电子表格(Excel 或 Calc)中打开文件,复制不带任何标题的内容并粘贴到文本编辑器中,然后保存为 .mat

        (顺便说一句,Gedit 和 Notepad++ 是我在处理大文件时首选的编辑器)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-24
          相关资源
          最近更新 更多