首页 > 编程知识 正文

python打开h5文件,h5页面设计是什么

时间:2023-05-04 16:33:12 阅读:130063 作者:3541

H5文件是分层数据格式的第五代版本(Hierarchical Data Format,HDF5),是用于存储科学数据的文件格式和库文件。 以美国超级计算中心和应用中心开发的文件格式,存储和整理大数据

将H5文件结构简化为两种主要对象类型:

1数据集dataset是同一类型数据的多维数组

2组组组是一个容器结构,可以包含数据集和其他组。如果一个文件包含不同类型的数据集,则组将用于管理这些数据集

直观理解,可以参考我们的文件系统,不同的文件存储在不同的目录中:

目录是hdf5文件中的组,描述数据集数据组的分类信息,通过组有效管理和分类多种数据组

文件是hdf5文件中的dataset,表示具体数据

下图为数据集与组的关系:

h5文件是真正的分层结构,是文件系统的数据类型。 数据集还包括元数据,即元数据

对于每个dataset,除了数据本身之外,这个数据集还有很多的属性信息.HDF5支持同时存储与数据集相对应的属性信息,所有属性信息的集合称为http://www.Sina.com/,下图为h5

h5py文件是存储两种类型对象的容器,数据集(数据集)和组(组)、dataset类似于数组类的数据集合,与numpy数组几乎相同。 group是一个容器,类似于文件夹,类似于python字典,包含“关键帧”和值。 组中可以容纳dataset和其他组。 “键”是组成员的名称,“值”是组成员对象本身(组或数据集)。 让我们看看如何创建组和数据集。

通过创建h5py文件classfile(name,mode=None,driver=None,libver=None,userblock_size=None,**kwds )来创建HDF5文件userblock_size返回在文件开头指定的打开文件的句柄(以字节为单位,称为userber )。

有效的mode参数如下:

模式说明

r只读,文件必须存在

r读写,文件必须存在

w创建并写入新文件将复盖已存在的文件

w-/x创建并写入新文件。 如果文件已经存在,将出现错误

a打开现有文件进行读写,如果不存在,创建新文件进行读写。 这是默认的模式

导入h5py #读取文件时,如果将w转换为RF=h5py.file('myh5py.hdf5 ',' w ' ),则会在当前目录下生成myh5py.HDF5文件

2.dataset数据集创建create_dataset(self,name,shape=None,dtype=None,data=None,**kwds )以创建新的dataset 指定创建的dataset的名称name,就像文件路径一样。 shape指定为tuple或list。 在「()”中指定标量数据的形状。 dtype表示创建的dataset的数据类型。 如果可以指定numpy dtype或表示数据类型的字符串,并且data为None,则必须创建空dataset并设置shape和dtype。 如果data不是None,则可以在不设置shape和dtype的情况下使用data的shape和dtype,但如果设置,则必须与data的shape和dtype兼容。

三种方式

import H5 pyimportnumpyasnpf=h5py.file (myh5 py.HD F5 ',' w ' ) #分别创建三个数据集: dset1、dset2和dset3。 #具有现成的numpy数组,可以在创建数据集时为其赋值;a=NP.arange(20 ) D1=f.create _ dataset;data=a ) #dset2是数据4 )表示数据集的shape,I表示数据集的元素类型D2=' I ' ) D2[.]=NP.arange(12 ).reshape ) ]赋值)创建数据集,如下所示

nt(f[key].value)输出:/dset1[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]/dset2[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]/dset3[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] 3. 创建group组 create_group(self, name, track_order=False)

创建一个新的 group。以类似目录路径的形式指明所创建 group 的名字 name,如果 track_order 为 True,则会跟踪在当前 group 下的 group 和 dataset 创建的先后顺序。该方法可以在打开的文件句柄(相当于 “/” group)或者一个存在的 group 对象上调用,此时 name 的相对路径就是相对于此 group 的。

import h5pyimport numpy as npf=h5py.File("myh5py.hdf5","w")#创建一个名字为bar的组g1=f.create_group("bar")#在bar这个组里面分别创建name为dset1,dset2的数据集并赋值。g1["dset1"]=np.arange(10)g1["dset2"]=np.arange(12).reshape((3,4))for key in g1.keys(): print(g1[key].name) print(g1[key].value)输出:/bar/dset1[0 1 2 3 4 5 6 7 8 9]/bar/dset2[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

注意观察数据集dset1和dset2的名字有点和前面的不一样,如果是直接创建的数据集,不在任何组里面,那么它的名字就是**/+名字**,现在这两个数据集都在bar这个group(组)里面,名字就变成了**/bar+/名字**,有点文件夹的感觉。

import h5pyimport numpy as npf=h5py.File("myh5py.hdf5","w")#创建组bar1,组bar2,数据集dsetg1=f.create_group("bar1")g2=f.create_group("bar2")d=f.create_dataset("dset",data=np.arange(10))#在bar1组里面创建一个组car1和一个数据集dset1。c1=g1.create_group("car1")d1=g1.create_dataset("dset1",data=np.arange(10))#在bar2组里面创建一个组car2和一个数据集dset2c2=g2.create_group("car2")d2=g2.create_dataset("dset2",data=np.arange(10))#根目录下的组和数据集print(".............")for key in f.keys(): print(f[key].name)#bar1这个组下面的组和数据集print(".............")for key in g1.keys(): print(g1[key].name)#bar2这个组下面的组和数据集print(".............")for key in g2.keys(): print(g2[key].name)#顺便看下car1组和car2组下面都有什么,估计你都猜到了为空。print(".............")print(c1.keys())print(c2.keys())输出:............./bar1/bar2/dset............./bar1/car1/bar1/dset1............./bar2/car2/bar2/dset2.............[][]

————————————————
参考:https://www.cnblogs.com/abella/p/11125466.html
https://blog.csdn.net/csdn15698845876/article/details/73278120
https://www.jianshu.com/p/de9f33cdfba0

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。