Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2007 14:14:42

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

заполнение массива NumPy из текстового файла

Возникла необходимость загнать в массив числа float (~ 44 млн. чисел) из текстового файла, значения разделены пробелами. Файл ~600 Мб.

пробовал готовые функции:

scipy.io.read_array()
numpy.loadtxt()
numpy.fromfile()
pylab.load()

в каждом случае - длительное скачкообразное забивание памяти и вылет с ошибкой MemoryError.

самым простым оказалось

corn = zeros(43915080)
cnt = 0
for line in open(corn_file, ‘r’):
for k in map(float, line.split()):
corn = k
cnt += 1

но это строка за строкой, хоть и без загрузки всего файла
может есть более быстрые решения (без С конечно) ?



Офлайн

#2 Ноя. 8, 2007 14:29:07

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

заполнение массива NumPy из текстового файла

Я бы перегнал все в базу, а потом уже с ней работал. БД лучше справляется с огромными масивами данных. Да и функционал можно на уровне базы дописать, что б быстрее работало.

Офлайн

#3 Ноя. 8, 2007 14:48:23

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

заполнение массива NumPy из текстового файла

а если загнать его в строку и попробовать функцию frombuffer()?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version