2011-02-10 2 views
1

У меня есть несколько больших наборов данных (числовых и текстовых), и когда я изучаю и делаю визуализации с помощью python и numpy/matplotlib, у меня возникает проблема: я загружаю необработанные данные, применять вычисления, а затем создавать графики в matplotlib. Это все в одной программе, поэтому я избыточно и неэффективно вычисляю одни и те же данные каждый раз, когда я хочу настроить легенду графика или сделать мои графики более привлекательными. Я работаю только с небольшим образцом моего набора данных, и скрипт работает 30 минут за раз!Хранение необработанных и обработанных данных для эффективного использования в matplotlib

Я знаю, что решение состоит в том, чтобы выполнять вычисления и хранить выходные данные для использования в отдельной программе; затем используйте другую программу для генерации фактических графиков. Моя проблема в том, что я не знаю, как лучше хранить обработанные данные между программами. Должен ли я создать файл .csv или какие-то подходящие структуры, которые могут автоматически хранить данные в (возможно) человекочитаемых форматах?

ответ

3

выезд pytables, обертка для HDF5 libarary. Он был разработан для такого рода вещей.

+0

Эти скриншоты выглядят похожими на таблицы matplotlib. Является ли pytables повторно использовать эту функциональность? – user17925

+0

Они использовали matplotlib для определения результатов испытаний. Он не является частью самого pytables. – Keith

1

Я бы просто мариновал их. Это очень просто, обычно достаточно быстро и (если вы используете более новые, двоичные протоколы) также достаточно эффективно в космосе. Не забудьте использовать самый доступный протокол:

import cPickle 
with open("results.dat", "wb") as stream: 
    cPickle.dump(data, stream, cPickle.HIGHEST_PROTOCOL) 
... 
with open("results.dat", "rb") as stream: 
    data = cPickle.load(stream) 
Смежные вопросы