我正在使用Octave并且要加载~80 mb .csv文件。
csvread()需要很长时间才能加载。
如何将csv文件保存为.mat文件或二进制文件,或者至少加快Octave csvread()的速度?
提前谢谢!
答案 0 :(得分:1)
好吧,如果您还使用r,则可以执行以下操作:
现在您可以加载.mat文件"更快"在八度 - 但步骤1("阅读csv")也可能很慢;
答案 1 :(得分:1)
这是一个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})
答案 2 :(得分:0)
我几次遇到过这个问题。我做的可能很草率,但对我来说效果很好。我在电子表格(Excel或Calc)中打开文件,复制没有任何标题的内容并粘贴到文本编辑器中,我保存为.mat
(顺便说一下,在处理大文件时,Gedit和Notepad ++是我的首选编辑器)