【发布时间】:2014-01-16 01:47:05
【问题描述】:
我正在使用 Octave 并有一个大约 80 mb 的 .csv 文件要加载。
csvread() 需要很长时间才能加载。
如何将 csv 文件保存为 .mat 文件或二进制文件,或者至少加快 Octave csvread() 的速度?
提前谢谢你!
【问题讨论】:
标签: optimization csv converter octave
我正在使用 Octave 并有一个大约 80 mb 的 .csv 文件要加载。
csvread() 需要很长时间才能加载。
如何将 csv 文件保存为 .mat 文件或二进制文件,或者至少加快 Octave csvread() 的速度?
提前谢谢你!
【问题讨论】:
标签: optimization csv converter octave
好吧,如果您也在使用 r,您可以执行以下操作:
现在您可以在 Octave 中“更快”加载 .mat 文件,但第 1 步(“读取 csv”)也可能很慢;
【讨论】:
这是一个 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})
【讨论】:
我遇到过几次这个问题。我所做的可能很草率,但对我来说效果很好。我在电子表格(Excel 或 Calc)中打开文件,复制不带任何标题的内容并粘贴到文本编辑器中,然后保存为 .mat
(顺便说一句,Gedit 和 Notepad++ 是我在处理大文件时首选的编辑器)
【讨论】: