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

简介: 本文围绕用Python的h5py实现HDF5数据高效管理展开。先介绍HDF5优势,如层次分明、高效存储、跨平台等。接着讲解文件结构,展示h5py安装、文件流获取、数据读写等操作,还提及进阶技巧、查看数据软件、常见问题及参考资料。

诸神缄默不语-个人技术博文与视频目录

为什么选择HDF5?

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

  1. 层次分明 - 类文件夹结构管理数据
  2. 高效存储 - 支持TB级数据快速存取
  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.ndarray

    print(temp_data.name)  # temperature
    print(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和group
    def 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. OSError: Unable to open file(file signature not found):这就是纯文件损坏的问题,我是U盘传HDF5文件后中出现的这个问题,换个移动硬盘就好了。

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

  2. Python中的h5py包使用(详细图文教程)
  3. 报错:h5文件读取失败-OSError:Unable to open file (file signature not found) - pythoner_wl - 博客园
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
相关文章
|
1月前
|
Java Go 开发者
开发效率三剑客:代码格式化、接口调试与文档生成
本文系统讲解现代软件开发三大关键环节:代码格式化(统一风格、提升可读性)、接口调试(精准验证、Mock协同)与文档生成(代码即文档、实时同步)。涵盖Python/Java/Go等主流语言工具推荐及CI/CD集成实践,助力零基础开发者高效入门、规避低级错误。(239字)
206 0
|
1月前
|
域名解析 缓存 网络协议
DNS 与 hosts 文件:Windows 11 中的名称解析配置
本文详解Windows域名解析机制,重点对比hosts文件(本地静态映射,优先级最高)与DNS(远程动态查询)的原理、配置及优先级顺序,并指导如何在Win11中修改hosts、刷新缓存、设置DNS服务器,涵盖开发测试、访问加速、广告屏蔽等实用场景。
|
存储 Linux Go
基于MinIO搭建高性能文件服务器
基于MinIO搭建高性能文件服务器
1824 0
基于MinIO搭建高性能文件服务器
|
1月前
|
人工智能 安全 机器人
我们来说说到底什么是 agent ?
我是小假 期待与你的下一次相遇 ~
769 1
|
1月前
|
Java 应用服务中间件 Apache
2026最新Tomcat安装和配置保姆级教程(附安装包+图文步骤)
Apache Tomcat是开源轻量级Java Web服务器与Servlet容器,支持Servlet、JSP、WebSocket等规范。解压即用,部署.war包即可运行Web应用,广泛用于开发与测试。推荐使用Tomcat 10.1.x或11.x(需JDK 11+),注意jakarta.*命名空间迁移。
|
17天前
|
人工智能 弹性计算 安全
阿里云38元、9.9元与199元轻量应用服务器,99元与199元云服务器购买入口及相关规则解析
2026年阿里云推出的几款特惠云服务器主要涉及四款产品:轻量应用服务器2核2G(38元/年,限时抢购)、2核4G(9.9元/月或199元/年),以及ECS云服务器2核2G(99元/年)和2核4G(199元/年)。本文为大家介绍了各产品的配置参数、抢购资格与时间、购买入口、续费政策及适用场景,并提供了对比和选购策略建议:新用户追求极致性价比可抢购轻量服务器,注重长期稳定则推荐ECS"99计划"(新购续费同价至2027年),企业用户适合199元独享型实例。同时涵盖OpenClaw等AI镜像快速部署方案。
714 21
|
1月前
|
运维 网络协议 数据可视化
KKCE在线Ping工具说明
KKCE在线Ping是一款零门槛云端网络诊断工具,无需安装、不需命令行,浏览器打开即用。支持多节点ICMP/TCP检测,实时显示延迟、丢包等指标,并集成DNS查询、HTTP测速等功能,兼顾普通用户故障排查与运维人员专业监测需求。(239字)
228 1
|
1月前
|
消息中间件 缓存 NoSQL
高并发直播带货系统如何设计?私域直播平台源码开发实战分享
随着直播电商与私域流量运营快速发展,越来越多企业开始搭建自己的私域直播平台。本文从软件开发实战角度,深入解析高并发直播带货系统的核心架构设计,包括流媒体传输、CDN分发、WebSocket消息系统、Redis缓存、MQ消息队列、订单削峰、秒杀架构等关键技术,并分享企业直播平台源码开发中的常见问题与解决方案,帮助企业更好地理解直播系统开发逻辑与私域直播平台搭建思路。
|
1月前
|
人工智能 自然语言处理 供应链
设备码钓鱼攻击的技术演进、实施机理与防御体系研究
本文系统剖析设备码钓鱼这一新型身份接管攻击:利用OAuth 2.0设备授权流程,通过社会工程诱导用户在官方认证页提交恶意设备码,绕过多因素认证窃取令牌。基于Proofpoint 2026年最新数据,揭示EvilTokens等PhaaS平台运作机制与AI辅助攻击趋势,提出覆盖策略阻断、合规设备校验、用户培训及威胁检测的多层防御体系,并提供可落地的配置代码与检测规则。(239字)
369 0
|
1月前
|
程序员 测试技术 API
初级程序员必备的十大技能之开发工具熟练使用(五)
教程来源 https://oplhc.cn/ 本节精选6大类高效开发工具:全局搜索(Alfred/Everything)、笔记与代码片段(Obsidian/Snipaste)、终端管理(iTerm2)、API测试(curl/Postman)、数据库(DBeaver/DataGrip)、正则调试(regex101)。覆盖日常编码全链路,提升检索、记录、调试与协作效率。

热门文章

最新文章