当前位置:首页>python>玩转HDF5数据:用Python的h5py实现高效数据管理

玩转HDF5数据:用Python的h5py实现高效数据管理

  • 2026-10-21 13:29:24
玩转HDF5数据:用Python的h5py实现高效数据管理

为什么选择HDF5?

在数据处理领域,HDF5(Hierarchical Data Format)可谓是大数据时代的隐形冠军。相比传统的CSV、Excel等格式,HDF5拥有三大杀手锏:

  1. 1. 层次分明 - 类文件夹结构管理数据
  2. 2. 高效存储 - 支持TB级数据快速存取
  3. 3. 跨平台 - 通用格式无缝衔接各语言

特别适合处理科学计算、深度学习中的海量数据,堪称数据管理的瑞士军刀。

一、HDF5文件结构解密

打开HDF5文件就像进入一个数据超市:

  • Groups:类似文件夹,用于组织数据
  • Datasets:实际存储的多维数据矩阵
  • Attributes:元数据标签,记录关键信息

二、Python实战:h5py快速上手

h5py官方文档:https://docs.h5py.org/en/stable/index.html

2.1 安装只需1行

pip install h5py

2.2 获取HDF5文件流

通过h5py.File(path,mode)可以新建或者获取已有的HDF5文件流。

mode:

  • "w":会覆盖已存在的文件,直接创建新的HDF5数据
  • "r":默认模式,只读
  • "r+":可修改

创建hdf5文件的示例:(这里是用上下文管理器(with语句)来保证文件关闭,如果直接将文件流放到内存里,要记得close()掉)

import h5py# 创建新文件('w'模式会覆盖已存在的文件)with h5py.File('my_data.hdf5', 'w') as f:# 创建数据集:存储10x10的随机矩阵    f.create_dataset('temperature', data=np.random.rand(10,10))  # 指定data的写法    f.create_dataset('calender', (3,4))  # 指定shape的写法# 添加元数据    f.attrs['create_date'] = '2024-03-20'

2.3 数据读写

with h5py.File('my_data.hdf5', 'r+') as f:# 读取数据    temp_data = f['temperature']  # h5py._hl.dataset.Dataset    temp_data_value = temp_data[:]  # numpy.ndarrayprint(temp_data.name)  # temperatureprint(temp_data.shape)  # (10,10)print(temp_data.dtype)  # float64# 修改部分数据    f['temperature'][0,0] = 36.5# 修改所有数据    f['temperature'][...] = numpy_data# 创建group    group = f.create_group('sensors')  # h5py.Group# 获取group对象到内存中也使用键名    group = f["sensors"]# 获取所有键名(这里包括dataset和group)    keys = f.keys()  # 返回一个迭代器# 用f.visit(func)来直接遍历所有dataset和groupdef print_name(name):print(name)    f.visit(print_name)# group就完全可以当成hdf5来用,创建数据什么的都跟hdf5文件流的一样:    group.create_dataset('sensor1', data=[1,2,3])  # 指定data的写法    group.create_dataset('sensor2', (3,4))  # 指定shape的写法

三、高手技巧:进阶操作

3.1 分块存储大文件

# 创建支持分块存储的数据集dset = f.create_dataset("big_data", (1000, 1000),                        chunks=(100, 100),                        compression="gzip")

常用压缩方式对比:

压缩方式压缩率速度
gzip中快
lzf低最快
szip高慢

四、直观查看hdf5数据

软件1:HDF Explorer

键名如果是中文而想直接显示的话似乎必须是GBK编码的字节流格式才行呢。

软件2:HDFView

五、常见问题

  1. 1. OSError: Unable to open file(file signature not found):这就是纯文件损坏的问题,我是U盘传HDF5文件后中出现的这个问题,换个移动硬盘就好了。

六、本文撰写过程中参考的其他网络资料

  1. 1. Python中的h5py包使用(详细图文教程)https://blog.csdn.net/qq_40280673/article/details/135392999
  2. 2. 报错:h5文件读取失败-OSError:Unable to open file (file signature not found) - pythoner_wl - 博客园 https://www.cnblogs.com/pythonwl/p/14189474.html

最新文章

随机文章