【发布时间】:2013-08-18 00:55:12
【问题描述】:
我发布这个问题是因为我想知道我是否做错了什么才能得到这个结果。
我有一个中等大小的 csv 文件,我尝试使用 numpy 来加载它。为了说明,我使用python制作了文件:
import timeit
import numpy as np
my_data = np.random.rand(1500000, 3)*10
np.savetxt('./test.csv', my_data, delimiter=',', fmt='%.2f')
然后,我尝试了两种方法:numpy.genfromtxt,numpy.loadtxt
setup_stmt = 'import numpy as np'
stmt1 = """\
my_data = np.genfromtxt('./test.csv', delimiter=',')
"""
stmt2 = """\
my_data = np.loadtxt('./test.csv', delimiter=',')
"""
t1 = timeit.timeit(stmt=stmt1, setup=setup_stmt, number=3)
t2 = timeit.timeit(stmt=stmt2, setup=setup_stmt, number=3)
结果显示t1 = 32.159652940464184, t2 = 52.00093725634724。
但是,当我尝试使用 matlab 时:
tic
for i = 1:3
my_data = dlmread('./test.csv');
end
toc
结果显示:经过的时间是3.196465秒。
我了解加载速度可能存在一些差异,但是:
- 这远远超出了我的预期;
- 不是说np.loadtxt应该比np.genfromtxt快吗?
- 我还没有尝试过 python csv 模块,因为加载 csv 文件是我经常做的事情,而且使用 csv 模块,编码有点冗长......但如果是这样的话,我很乐意尝试唯一的办法。目前我更担心是不是我做错了什么。
任何意见将不胜感激。提前非常感谢!
【问题讨论】: