2 回答

TA贡献1852条经验 获得超7个赞
我发现了两种方法:
I)将datetime对象转换为字符串并将其用作数据集名称
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()
为简单起见,我选择第一个选项。

TA贡献1942条经验 获得超3个赞
这个问题与更一般的问题有关,即能够以HDF5格式存储任何类型的字典。首先,将字典转换为字符串。然后,要恢复字典,请ast通过使用import ast命令来使用该库。以下代码给出了一个示例。
>>> d = {1:"a",2:"b"}
>>> s = str(d)
>>> s
"{1: 'a', 2: 'b'}"
>>> ast.literal_eval(s)
{1: 'a', 2: 'b'}
>>> type(ast.literal_eval(s))
<type 'dict'>
添加回答
举报