Python3使用h5py遍历HDF5文件完整指南
本文详细介绍如何在Python3中使用h5py模块遍历、读取和写入HDF5文件。涵盖h5py安装、HDF5文件结构(Group与Dataset)、元数据操作及完整代码示例,帮助开发者高效处理大规模科学数据。
以下是具体的代码实现部分。
import h5py
import numpy as np
f = h5py.File('train/e1_1.hdf5')
key = ""
for k in f.keys():
key = k
d = f[key]
print(d)
a = np.ones(d.shape)
d.read_direct(a)
print(a)
f.close()
补充说明:HDF5文件结构及其在Python中的h5py模块应用。
HDF5文件概述
HDF5文件是什么?
首先引用维基百科的定义:层级数据格式(Hierarchical Data Format,简称HDF)是一组用于存储和组织大量数据的文件格式标准,包括HDF4和HDF5版本。
该格式最初由美国国家超级计算应用中心开发,目前由非营利组织HDF Group维护,致力于确保HDF5技术的持续演进以及存储在HDF格式中数据的长期可访问性。
HDF5具备多项优异特性,使其成为存储和操作大规模科学数据的理想选择。其特点包括支持多种数据类型、灵活性与通用性、跨平台兼容性、可扩展性以及高效的I/O性能,同时支持单文件存储容量高达EB级别。
在Linux系统中如何查看HDF5文件内容?
h5ls info.h5
# key1 Dataset {10000}
# key2 Dataset {10000,5}
# key3 Dataset {20000,30}
h5py模块详解
利用Python可以便捷地读写HDF5文件,其中最常用的库是h5py。下文将详细说明该模块的安装步骤及具体使用方法。
安装模块
pip install h5py
pip install numpy
# numpy 通常是作为配合使用
对h5py功能的总结:
一个HDF5文件本质上是存储两类对象的容器,这两类对象分别为:
Dataset(数据集):类似于数组的数据集合;Group(组):类似于目录的容器,内部可包含一个或多个Dataset及其他Group。
每个HDF5文件都从一个名为“/”的根Group开始,所有的Dataset和其他Group均包含在此根Group之下。在操作HDF5文件时,若未显式指定Group,则默认操作的是“/”下的Dataset;此外,类似相对文件路径的Group名称也是相对于根目录“/”而言的。
HDF5文件中的Dataset和Group均可拥有描述性的元数据,这些元数据被称为Attribute(属性)。
使用h5py操作HDF5文件时,我们可以像操作目录一样操作Group,像操作NumPy数组一样操作Dataset,像操作字典一样操作属性,这种设计使得操作过程非常便捷且易于使用。
写入HDF5文件的方法
import h5py
import numpy as np
# 如果你要在根group下创建dataset
f = h5py.File('info.h5', 'w')
values1 = np.arange(12).reshape(4, 3)
values2 = np.arange(20).reshape(4, 5)
f.create_dataset(name='key1', data=np.array(values1, dtype='int64'))
f.create_dataset(name='key2', data=np.array(values2, dtype='int64'))
# 如果你要创建一个group(目录)
# 然后指定dataset放置的group
f.create_group('/dir1')
f.create_group('/dir1/dir2')
data = np.arange(6).reshape(3, 2)
f.create_dataset('/dir1/dir2', data=data)
# 最后别忘了关闭文件
f.close()
读取HDF5文件的方法
import h5py
with h5py.File(info.h5, 'r') as f:
values1 = f['key1'].value
values2 = f['key2'].value
以上内容为个人经验分享,希望能为大家提供参考。也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









