gpt4 book ai didi

python - 如何在 HDF5 数据集中存储字典

转载 作者:IT老高 更新时间:2023-10-28 20:21:56 27 4
gpt4 key购买 nike

我有一本字典,其中键是日期时间对象,值是整数元组:

>>> d.items()[0]
(datetime.datetime(2012, 4, 5, 23, 30), (14, 1014, 6, 3, 0))

我想将它存储在 HDF5 数据集中,但如果我尝试只转储字典 h5py 会引发错误:

TypeError: Object dtype dtype('object') has no native HDF5 equivalent

什么是转换此字典以便我可以将其存储在 HDF5 数据集中的“最佳”方法?

具体来说,我不想只将字典转储到 numpy 数组中,因为它会使基于日期时间查询的数据检索复杂化。

最佳答案

我找到了两种方法:

I) 将日期时间对象转换为字符串并将其用作数据集名称

h = h5py.File('myfile.hdf5')
for k, v in d.items():
h.create_dataset(k.strftime('%Y-%m-%dT%H:%M:%SZ'), data=np.array(v, dtype=np.int8))

可以通过查询键字符串(数据集名称)来访问数据。例如:

for ds in h.keys():
if '2012-04' in ds:
print(h[ds].value)

II) 将日期时间对象转换为数据集子组

h = h5py.File('myfile.hdf5')
for k, v in d.items():
h.create_dataset(k.strftime('%Y/%m/%d/%H:%M'), data=np.array(v, dtype=np.int8))

注意 strftime 字符串中的正斜杠,这将在 HDF 文件中创建适当的子组。可以像 h['2012']['04']['05']['23:30'].value 那样直接访问数据,或者通过提供的 h5py 迭代器进行迭代,甚至通过通过 visititems()

使用自定义函数

为简单起见,我选择第一个选项。

关于python - 如何在 HDF5 数据集中存储字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16494669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com