有没有办法在Python中逐行写入hdf5文件?
Is there way to write hdf5 files row by row in Python?
对于 CSV 文件,我们可以使用
writer = csv.writer(output)
writer.writerow([a, b, c, d])
写Hdf5文件有类似的东西吗?
如果您不受特定技术的限制,请查看 HDFql,因为这将使您在处理 HDF5 文件时无需了解低级细节。
要解决您的问题,您需要创建一个具有两个维度的数据集:第一个是可扩展的,第二个的大小为四(根据您的代码片段,我假设您希望每行存储四个整数;另外,如果数据类型不是整数,请检查 HDFql reference manual 以获取所有数据类型的枚举,并相应地更改下面的代码片段。
在 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 行代码片段,次数与要写入的行数相同。
这与您的其他问题类似。
使用 pytables,您可以创建一个空的 table 引用定义每个数据类型的数据类型(在本例中为 4 个浮点数)。然后使用 table_object.append(row_data)
添加 1 行或多行数据,其中 row_data
可以用元组列表或 numpy recarray 定义。请参阅我为回答上述问题而发布的完整示例。
对于 CSV 文件,我们可以使用
writer = csv.writer(output)
writer.writerow([a, b, c, d])
写Hdf5文件有类似的东西吗?
如果您不受特定技术的限制,请查看 HDFql,因为这将使您在处理 HDF5 文件时无需了解低级细节。
要解决您的问题,您需要创建一个具有两个维度的数据集:第一个是可扩展的,第二个的大小为四(根据您的代码片段,我假设您希望每行存储四个整数;另外,如果数据类型不是整数,请检查 HDFql reference manual 以获取所有数据类型的枚举,并相应地更改下面的代码片段。
在 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 行代码片段,次数与要写入的行数相同。
这与您的其他问题类似。
使用 pytables,您可以创建一个空的 table 引用定义每个数据类型的数据类型(在本例中为 4 个浮点数)。然后使用 table_object.append(row_data)
添加 1 行或多行数据,其中 row_data
可以用元组列表或 numpy recarray 定义。请参阅我为回答上述问题而发布的完整示例。