python读取hdf5文件_2分钟能掌握HDF5文件读写吗?5张h5py图告诉你答案

在科学计算中、卫星遥感应用等领域经常用到HDF5文件。HDF5作为分层式数据结构文件格式由组、数据集及其属性等组成,结构复杂,2分钟能掌握HDF5文件的读写吗?h5py包是管理HDF5文件的开原包之一,使用简单、方便。

结合本人多年h5py包使用经验,整理资料后,从文件、组、数据集、属性和数据类型等5个方面的使用进行归纳,精心制作了6张图,为h5py包的快速使用提供参考。

63d9f2d3572c11dffe4ae5dc7b3f28d6f603c250.jpeg?token=e14213e03431fd7526e4a2cd6df94f55&s=D9281D72198FE54D464555CA0000E0B2h5py整体框架

01文件

在使用HDF5文件时,一般要经过打开文件、存储缓存数据和关闭文件3个步骤。这也是读写HDF5文件的一般流程。HDF5文件打开模式共分5种,见图1。同HDF4文件的打开方式不同,'w'只是用来创建一个新的文件,同C库的creat()类似,'a'打开一个现有的文件或者创建没有的文件,使用方面。

b3119313b07eca80c4aa6f18883bdddba0448344.jpeg?token=ae12cc11384e68ecbb406a9558707bfd&s=D8281C7209FFC1CE1CF500CE0000F0B2图1 h5py中文件管理

02组

组(group)是实现HDF分层结构的主要形式。h5py包从组的创建、添加成员、组删除和读取4个方面管理组,见图2。组同文件夹类似,可以通过'/'分隔符将多层的组组合起来。HDF5文件可以认为是顶层的组,'/'。

在组内可以创建组和数据集成员,也可以通过move()和copy()方法添加已经存在的成员。在读取组成员时可以使用get()方法,可以像python字典一样,使用[]访问或者通过item()、keys()和values()编历,也可以迭代访问成员组内的成员。在删除组和组内成员时一般使用del命令,组被删除的同时组内成员一并删除。

7acb0a46f21fbe096a491645717846358744ad6e.jpeg?token=e66a4d1e7541a9f5f3f68946a7dc57c5&s=D9281C7211BFC5CC585524CB0000A0B2图2 h5py中组管理

03数据集

数据集是HDF5文件的核心部分。h5py实现了数据集的创建、写入数据、读取数据和删除,见图3。在管理数据集时,h5py可以使用内置方法如create_dataset()通过指定参数进行管理,在创建时可实现数据集的分块存储、压缩、可变形状和空数据集;也可以直接像python字典一样通过'[]'直接赋值和访问,赋值时如果不存在会默认创建;也支持了索引和切片,在读写数据集时对部分数据进行读写和更新,甚至读取数据时可以设置读出的数据类型和字段说明。删除数据集同删除组的用法相同。

38dbb6fd5266d0164586872b8c339e0135fa3537.jpeg?token=1e1c95e8a351542e1f1a321b2ac707cc&s=982A5C3211BFF1CC487D41CA0000F0B2图3-a h5py中数据集创建

8ad4b31c8701a18bc69c569386374d0e2938fe91.jpeg?token=0e7a468c2c7dedf8c725d95866cf5423&s=D8281C7201FFE1CE0A5D45CA0000B0B2图3-b h5py中数据集管理

04属性

属性是对组和数据集本身的说明。h5py包也可以像python字典一样管理属性。通过atts获取全部属性的实例,然后创建、读取和更新,见图。在读取时,如果属性不存在则会引发异常。

37d12f2eb9389b5010fd17b39c2dafdbe6116eeb.jpeg?token=987176ff1d12b448c5db106d4e3a6877&s=58243C7205C8494344D1E1CB0000E0B3图4 h5py中属性管理

05数据类型

HDF5文件支持了大多数NumPy类型,但不支持泛型、time和Unicode字符串类型。在对数据类型书写支持了字符串简明写法,例如,16位无符号整型为'uint16'或者'U16'。也支持字符串、枚举和可变类型等3种特殊类型。其中字符串类型只支持'ascii'和'utf-8'。具体见图6。

95eef01f3a292df597202481a529166635a87365.jpeg?token=f945d078fc76314f3c22ec1bc0610607&s=B8A85C3251AFE14F46E505CA000030B2图5 h5py中数据类型

最后,h5py包管理HDF5文件非常简单、方便。本文图中的内容很丰富,无法用文字进行详细说明,另外由于篇幅所限,图种文字说明比较简略,实例较少,请多包涵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值