作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一本字典,其中键是日期时间对象,值是整数元组:
>>> 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/
我是一名优秀的程序员,十分优秀!