帮助h5py加载和转储包含h5py支持的类型的词典。
hdfdict的Python项目详细描述
hdfdict帮助h5py转储和加载python字典
例如,如果在字典中有numpy数组的分层数据结构,则可以使用此工具将此字典保存到h5py File()
或Group()
中并再次加载。
这个工具只是将hdf Groups
映射到dict keys
,将Datset
映射到dict values
。
只能使用h5py支持的类型。
到现在为止,数字键必须是字符串。
默认情况下会激活延迟加载选项。所以大的h5文件不能一次加载。相反,只有从lazyhdfdict实例访问数据集时,才会加载该数据集。
示例
importhdfdictimportnumpyasnpd={'a':np.random.randn(10),'b':[1,2,3],'c':'Hallo','d':np.array(['a','b']).astype('S'),'e':True,'f':(True,False),}fname='test_hdfdict.h5'hdfdict.dump(d,fname)res=hdfdict.load(fname)print(res)
输出:
{'a': <HDF5 dataset "a": shape (10,), type "<f8">, 'b': <HDF5 dataset "b": shape (3,), type "<i8">, 'c': <HDF5 dataset "c": shape (), type "|O">, 'd': <HDF5 dataset "d": shape (2,), type "|S1">, 'e': <HDF5 dataset "e": shape (), type "|b1">, 'f': <HDF5 dataset "f": shape (2,), type "|b1">}
这都是结果res
中的延迟loding字段。
只需调用res.unlazy()
或dict(res)
即可加载所有字段。
如果您只想加载特定的字段,只需使用项访问,例如res['a']
,这样只会从文件中加载字段“a”。
print(dict(res))`
输出:
{'a': array([-0.47666824, 0.11787749, 0.51405835, -1.49557787, -0.33617182, -0.22381693, 0.25966526, 0.58160661, 0.17019176, 1.3167669 ]), 'b': array([1, 2, 3]), 'c': 'Hallo', 'd': array([b'a', b'b'], dtype='|S1'), 'e': True, 'f': array([ True, False])}
安装
pip install hdfdict
poetry install hdfdict
git clone https://github.com/SiggiGue/hdfdict.git
和python hdfdict/setup.py install