我发布了这个问题,因为我想知道我是否做了一些非常错误的事情来得到这个结果。
我有一个中等大小的 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 模块,编码有点冗长......但如果这是唯一的方法,我会很乐意尝试. 目前我更担心是不是我做错了什么。
任何输入将不胜感激。提前非常感谢!