Форум сайта python.su
Добрый день уважаемое сообщество программеров на python. Сам программировать вообще только начинаю, еще даже не дочитал Марка Лутца (программирвоание на python 4), однако задача передо мной уже встала, притом не простая и как ее реализовать понятия не имею. В общем существуют выхлдные файлы формата *.dat имеющие примерно вот такую структуру:
№ масса x y z vx(ск-ть по х) xy (ск-ть по н) vz (ск-ть z)
000000 1.25000000E-04 5.21462443E-01 1.87714331E-02 1.32428970E+00 -2.32415251E-01 -5.23119019E-01 2.80631315E-01
000001 1.25000000E-04 3.63733470E-01 -2.04553131E-01 2.58420622E-01 1.39289015E-02 -2.13983670E-01 2.88175786E-01
и так далее.. в общем суть поставленной передо мной задачи такова:
1) *.dat файлов может быть тысячи и нужно данные со всех файлов, записать в 1 файл
2) преобразовать в бинарный вид и записат в *.hdf формат для дальнейшей визуализации
у меня получается только прочитать файлы, но вопросы остаются
1) как прочитать 10 файлов и записать все в 1
2) как плученный результат преобразовать в бинарный вид
извиняюсь если вопрос неуместен, и заранее спасибо.
Офлайн
r1pleyНе надо стесняться.
если вопрос неуместен
Отредактировано doza_and (Ноя. 23, 2013 09:10:49)
Офлайн
Спасибо большое, буду пробовать, а читаю вот так, хотя возможно и не правильно..
f=open('000000.dat')
f.readlines()
только вот с cat немного не понял…
cat .dat > main.hdf
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘cat’ is not defined
Отредактировано r1pley (Ноя. 23, 2013 09:20:20)
Офлайн
проще, наверное, добавить заголовки к стобцам в эти файлах и прочесть как csv через pandas. Им же и в hdf можно складывать и считывать обратно, все само проименуется в соотвествии с этими заголовками
Офлайн
sergeekХорошо спасибо, буду пробовать)
проще, наверное, добавить заголовки к стобцам в эти файлах и прочесть как csv через pandas. Им же и в hdf можно складывать и считывать обратно, все само проименуется в соотвествии с этими заголовками
Офлайн
да не нужен тут csv
numpy.loadtxt(fname, skiprows=1)
r1pley
cat .dat > main.hdf
Traceback (most recent call last):
cat *.dat >main.hdf
arr=numpy.loadtxt(fname, skiprows=1) m=arr[:,0] x=arr[:,1] ....
Отредактировано doza_and (Ноя. 23, 2013 09:43:24)
Офлайн
doza_andзадача тса решается в две строки через pandas.dataframe
да не нужен тут csv
In [2]: import pandas In [3]: with pandas.get_store('db.h5') as db: ...: db['/data'] = pandas.read_csv('asd.dat', sep=' ',header=None, names=['mass', 'x', 'y', 'z', 'vx', 'vy', 'vz']) ...: In [4]: pandas.HDFStore('db.h5')['/data'] Out[4]: mass x y z vx vy vz 0 0.000125 0.521462 0.018771 1.324290 -0.232415 -0.523119 0.280631 1 0.000125 0.363733 -0.204553 0.258421 0.013929 -0.213984 0.288176
Офлайн
sergeekНе могу согласиться. Он сначала неделю будет изучать pandas. Но не это главное. pandas.HDFStore сохранит данные в формате pytable. При этом теряется низкоуровневое управление записью доступное в h5py. В моей практике не было ни одного случая когда это было допустимо, причем даже в тех случаях когда я сам формат выбирал. Всегда надо что-то переставить, подлатать, выкинуть, сделать другого типа, выбрать способ компрессии и т.п. Конечно может быть что я ошибаюсь, тогда поправьте. В частности не дошли руки разобраться:
задача тса решается в две строки
Отредактировано doza_and (Ноя. 23, 2013 15:02:34)
Офлайн
doza_andне понимаю что под этим подразумевается, если
При этом теряется низкоуровневое управление записью доступное в h5py
doza_andто типы можно указать явно при считывании, сжатие при открытии файла, фильтрацию данных тоже можно произвести после считывания
Всегда надо что-то переставить, подлатать, выкинуть, сделать другого типа, выбрать способ компрессии и т.п.
doza_andтам все просто - данные висят в памяти пока не закроется файл или не вызовется метод flush
Как происходит буферизация при добавлении данных в pytable?
doza_andНе понял вопрос. Я этот pytables использовал только в качестве дерева массивов с небольшой оберткой.
Есть ли некоммерческие решения по индексации данных в pytable?
doza_andа причем тут pytables? он ndarray и возвращает при считывании. Или вы про таблицы? Вроде бы все очень эффективно у них Они чуть ли не в каждом абзаце документации хвастаются эффективностью.
Насколько эффективно реализован array
doza_andhttp://www.pytables.org/moin/FAQ#HowdoesPyTablescomparewiththeh5pyproject.3F
икак не могу понять где вообще pytable имеет преимущества перед h5py?
Офлайн
sergeek,
ты в курсе, что сейчас Дьявола вызвал?
Офлайн