对于CSV文件,我们可以使用
writer = csv.writer(output)
writer.writerow([a, b, c, d])
是否有类似的东西来写Hdf5文件?
答案 0 :(得分:1)
如果您不受特定技术的束缚,请签出HDFql,因为这样可以减少处理HDF5文件时的底层细节。
要解决您的问题,您需要创建一个具有两个维度的数据集:第一个维度是可扩展的,第二个维度的大小为4(根据您的代码段,我假设您想每行存储四个整数;此外,如果数据类型不是整数,请检查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与要写入的行相同的次数。
答案 1 :(得分:1)
这与您的其他问题类似。Error when trying to save hdf5 row where one column is a string and the other is an array of floats
使用pytables,您可以创建一个空表,该空表引用定义了每个datataype的dtype(在此示例中为4个浮点数)。然后,您使用table_object.append(row_data)
添加1或多行数据,其中row_data
可以用元组列表或numpy数组来定义。请参阅我发布的用于回答上述问题的完整示例。