python - 将多个 HDF5 文件的数据集合并为一个虚拟数据集

标签 python hdf5 h5py

我有几个 HDF5 文件,每个文件都包含相同的两个数据集:datalabels。这些数据集是多维数组,首先是两者的维度相同。

我想将 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/

相关文章:

c++ - 如何使用 C++ API 在 HDF5 文件中创建多值属性

c++ - 使用 HDF5 保存要在 C++ 中读取的 MATLAB 结构

python - 在 re.sub 中使用变量名

python - 谷歌或工具: Employee Scheduling with availability constraint

python - Jinja2模板,去掉回车

matlab - 使用 scipy.io 加载 .mat 文件时出错(ValueError : Mat 4 mopt wrong format)

python - 如何以 HDF5 格式存储非常大的 3 维矩阵?

python - 将数据对象列表转换为 csv

java - 将 HDF4 数组转储到 ascii,并具有源文件的完全精度

python - h5py:切片数据集而不加载到内存中