我有几个 HDF5 文件,每个文件都包含相同的两个数据集:data
和 labels
。这些数据集是多维数组,首先是两者的维度相同。
我想将 HDF5 文件合并到一个文件中,我认为最好的方法是创建一个虚拟数据集,[ h5py reference ], [ HDF5 tutorial in C++ ]。但是,我还没有在Python和h5py中找到任何示例。
虚拟数据集有其他替代方案吗?或者您知道使用 h5py 的任何示例吗?
最佳答案
这是一个老问题,但无论如何......
虚拟数据集刚刚完全出现(2018 年 12 月 20 日)h5py v2.9
他们有创建虚拟数据集的示例: https://github.com/h5py/h5py/blob/master/examples/vds_simple.py
我还做了一些实验来连接示例创建的数据集。 这只是创建一个一维数组。
import h5py
import numpy as np
file_names_to_concatenate = ['1.h5', '2.h5', '3.h5', '4.h5']
entry_key = 'data' # where the data is inside of the source files.
sources = []
total_length = 0
for i, filename in enumerate(file_names_to_concatenate):
with h5py.File(file_names_to_concatenate[i], 'r') as activeData:
vsource = h5py.VirtualSource(activeData[entry_key])
total_length += vsource.shape[0]
sources.append(vsource)
layout = h5py.VirtualLayout(shape=(total_length,),
dtype=np.float)
offset = 0
for vsource in sources:
length = vsource.shape[0]
layout[offset : offset + length] = vsource
offset += length
with h5py.File("VDS_con.h5", 'w', libver='latest') as f:
f.create_virtual_dataset(entry_key, layout, fillvalue=0)
关于python - 将多个 HDF5 文件的数据集合并为一个虚拟数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330608/