Я разместил этот вопрос, потому что мне было интересно, сделал ли я что-то ужасное, чтобы получить этот результат.
У меня есть файл 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?
- Я еще не пробовал модуль csv python, потому что загрузка csv файла - это очень частое, что я делаю, и с модулем csv, кодирование немного подробное... Но я был бы рад попробовать, если это единственный путь. В настоящее время меня больше беспокоит, что я делаю что-то неправильно.
Любой ввод будет оценен. Большое спасибо заранее!