Есть ли способ записи файлов hdf5 строка за строкой в ​​Python? - PullRequest
0 голосов
/ 01 мая 2019

Для файлов CSV мы можем использовать

writer = csv.writer(output)
writer.writerow([a, b, c, d])

Есть ли что-нибудь подобное для записи файлов Hdf5?

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Это похоже на ваш другой вопрос. Ошибка при попытке сохранить строку hdf5, где один столбец является строкой, а другой - массивом с плавающей точкой

С помощью pytables вы можете создатьпустая таблица, ссылающаяся на тип d, который определяет каждый тип данных (в этом примере 4 числа с плавающей запятой).Затем вы используете table_object.append(row_data) для добавления 1 или более строк данных, где row_data может быть определено со списком кортежей или пустым массивом данных.Смотрите полный пример, который я разместил, чтобы ответить на вопрос выше.

1 голос
/ 01 мая 2019

Если вы не связаны с какой-либо конкретной технологией, проверьте HDFql , поскольку это избавит вас от подробностей низкого уровня при работе с файлами HDF5.

Чтобы решить свой вопрос, вынеобходимо создать набор данных с двумя измерениями: первое является расширяемым, а второе имеет размер четыре (исходя из вашего фрагмента кода, я предполагаю, что вы хотите хранить четыре целых числа в строке; также, если тип данных не является целым числом, пожалуйста,проверьте HDFql справочное руководство для перечисления всех типов данных и соответствующим образом измените приведенный ниже фрагмент кода.)

В Python для создания такого набора данных выполните (в данном примере dset):

HDFql.execute("CREATE DATASET dset AS INT(UNLIMITED, 4)")

Затем для каждой строки, которую вы хотите написать, выполните (пожалуйста, замените val0, val1, val2 и val3 на правильные значения):

HDFql.execute("INSERT INTO dset(-1:::) VALUES(%d, %d, %d, %d)" % (val0, val1, val2, val3))

... наконец, расширьте первое измерение набора данных dset на одно из следующих значений:

HDFql.execute("ALTER DIMENSION dset TO (+1)")

Повторите строки фрагмента кода # 2 и # 3 столько раз, сколько строк вы хотите записать.

...