有没有办法将二进制文件存储到 HDF5?

Is there a way to store a binary file to HDF5?

我有一个 numpy .npy 文件,想将其存储在我的 HDF 中。我使用 numpy 格式,因为文件有 dtype U22H5py 不喜欢那样。

有没有办法将此二进制文件存储在 HDF 中,以便我可以使用像 file['general/numpy_binary'] 这样的字典格式访问它。如果需要,我可以尝试提供一个 MWE。

MWE:

a = np.array([['here',1,2,3], ['that',4,5,6]]).astype('S10') 这是一个 2x4 数组。

with h5py.File('dump.h5','w') as debug:
    g=debug.create_group('general')
    dset = debug.create_dataset('general/data', data=a.tolist())

结果:

resulting dataset

我想以 2x4 table 的形式查看此数据。这可能吗?

您所显示的似乎是您工具的错误。观察:

>>> import numpy as np
>>> a = np.array([['here',1,2,3], ['that',4,5,6]]).astype('S10')
>>> a
array([[b'here', b'1', b'2', b'3'],
       [b'that', b'4', b'5', b'6']], dtype='|S10')
>>> a.tolist()
[[b'here', b'1', b'2', b'3'], [b'that', b'4', b'5', b'6']]
>>> import h5py
>>> h = h5py.File('data.h5','w')
>>> h.create_dataset('data',data=a.tolist())
<HDF5 dataset "data": shape (2, 4), type "|S4">
>>> h.close()
>>> h
<Closed HDF5 file>
>>> h = h5py.File('data.h5','r')
>>> h['data']
<HDF5 dataset "data": shape (2, 4), type "|S4">
>>> h['data'][0]
array([b'here', b'1', b'2', b'3'], dtype='|S4')
>>> h['data'][1]
array([b'that', b'4', b'5', b'6'], dtype='|S4')
>>>

注意形状是(2,4)。两行都存在于文件中。