有没有办法将二进制文件存储到 HDF5?
Is there a way to store a binary file to HDF5?
我有一个 numpy .npy
文件,想将其存储在我的 HDF 中。我使用 numpy 格式,因为文件有 dtype U22 而 H5py 不喜欢那样。
有没有办法将此二进制文件存储在 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)。两行都存在于文件中。
我有一个 numpy .npy
文件,想将其存储在我的 HDF 中。我使用 numpy 格式,因为文件有 dtype U22 而 H5py 不喜欢那样。
有没有办法将此二进制文件存储在 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)。两行都存在于文件中。