关于HDF5文件点击 查看
概述
python读取HDF5的方式较多:
- h5py
- pandas
这里只介绍h5py方式
打开
语法
File(name, mode=None, driver=None, libver=None, userblock_size=None, **kwds)
参数
- name:为文件名字符串,
- mode:为打开文件的模式,
- driver:可以指定一种驱动方式,如需进行并行 HDF5 操作,可设置为 ‘mpio’,
- libver 可以指定使用的兼容版本,默认为 ‘earliest’,也可以指定为 ‘latest’,
- userblock_size 以字节为单位指定一个在文件开头称作 user block 的数据块,一般不需要设置。
返回值
File对象
关于打开模式
- r:只读,文件必须存在
- r+:读写,文件必须存在
- w:创建新文件写,已经存在的文件会被覆盖掉
- w-:/ x 创建新文件写,文件如果已经存在则出错
- a:打开已经存在的文件进行读写,如果不存在则创建一个新文件读写,此为默认的 mode
创建group
以类似目录路径的形式指明所创建 group
语法
create_group(self, name, track_order=False)
参数:
- name:名字,
- track_order: 为 True,则会跟踪在当前 group 下的 group 和 dataset 创建的先后顺序。该方法可以在打开的文件句柄(相当于 “/“ group)或者一个存在的 group 对象上调用,此时 name 的相对路径就是相对于此 group 的。
创建dataset
以类似文件路径的形式指明所创建 dataset
语法
create_dataset(self, name, shape=None, dtype=None, data=None, **kwds)
参数
- name:名字,
- shape:以一个 tuple 或 list 的形式指明创建 dataset 的 shape,用 “()” 指明标量数据的 shape,
- dtype:指明所创建 dataset 的数据类型,可以为 numpy dtype 或者一个表明数据类型的字符串,
- data:指明存储到所创建的 dataset 中的数据。如果 data 为 None,则会创建一个空的 dataset,此时 shape 和 dtype 必须设置;如果 data 不为 None,则 shape 和 dtype 可以不设置而使用 data 的 shape 和 dtype,但是如果设置的话,必须与 data 的 shape 和 dtype 兼容。
添加attribute
打开的文件句柄(相当于 “/“ group),group 和 dataset 上都可以创建 attribute,以类似于字典的操作方式创建和读取 attribute。
例子:读取tensorflow的h5文件
import h5py
path=r"C:\Users\mym\Desktop\hangkong.h5"
f=h5py.File(path,"r")
def show_members(f):
# print(type(f))
for key in f.keys():
if isinstance(f.get(key),h5py._hl.group.Group):
print("name: %s,\t\tkeys: %s"%(f.get(key).name,[item for item in f.get(key).keys()]))
else:
print("name: %s,\t\tshape: %s,\t\tvalue: %s"%(f.get(key).name,f.get(key).shape,f.get(key)[()]))
show_members(f.get("model_weights").get("conv2d_100").get("conv2d_100"))
例子:写文件
import h5py
import numpy as np
f=h5py.File(r"C:\Users\mym\Desktop\myh5py.hdf5","w")
#创建一个名字为bar的组
g1=f.create_group("bar")
#在bar这个组里面分别创建name为dset1,dset2的数据集并赋值。
g1["dset1"]=1
g1["dset2"]=np.arange(12).reshape((3,4))
g1["name"]="哈哈"
for key in g1.keys():
print(g1[key].name)
print(g1[key].value)
感谢
https://blog.csdn.net/zkp_987/article/details/79852236
https://www.cnblogs.com/weiyinfu/p/10740653.html
https://blog.csdn.net/menghaocheng/article/details/84918919