python 笔记:h5py
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 笔记:h5py相关的知识,希望对你有一定的参考价值。
0 h5py文件
一个h5py文件是 “dataset” 和 “group” 二合一的容器。
1. dataset ——> 可以类比成ndarray,包含了一些数据
2. group ——>可以类比成字典, 包含了其它 dataset 和 其它 group
我们可以把h5py文件类比成“文件夹”,以树形结构存储group和dataset
1 创建一个h5py文件
import h5py
import numpy as np
#创建一个h5py文件
f = h5py.File("mytestfile.hdf5", "w")
#和python打开文件的方式一样,可以有'w',有'a'
f.name
#'/'
#创建一个dataset
dset = f.create_dataset("mydataset", data=np.random.random((3,3)))
#这样的创建方式就会在根目录f下创建一个dataset,内容为data的内容
dset.name
#'/mydataset'
#即dset的绝对路径
在h5py文件中,任何的group对象也可以有create_dataset和create_group方法
grp = f.create_group("subgroup") grp.name #'/subgroup' dset2 = grp.create_dataset("mydataset", data=np.random.random((3,3))) dset2.name #'/subgroup/mydataset' #在grp上创建一个dataset
当然,我们也不需要一步一步把中间的group创建出来,直接指定一个完整的目录也是ok的
dset3=f.create_dataset("grp3/mydataset", data=np.random.random((3,3))) dset3.name #'/grp3/mydataset'
可以看到里面现在有三个group了
for i in f: print(i) ''' grp3 mydataset subgroup '''
也可以用in来判断一个dataset或者一个group是否存在
'grp3' in f, 'grp2' in f #(True, False) #甚至完整路径都是可以的 '/subgroup/mydataset' in f #True
2 打印完整dataset和group路径
像前面的print只会返回他的直接成员,如果想要遍历整个文件的话,可以使用group方法visit,visititems
f.visit(print)
'''
grp3
grp3/mydataset
mydataset
subgroup
subgroup/mydataset
'''
f.visititems(print)
'''
grp3 <HDF5 group "/grp3" (1 members)>
grp3/mydataset <HDF5 dataset "mydataset": shape (3, 3), type "<f8">
mydataset <HDF5 dataset "mydataset": shape (3, 3), type "<f8">
subgroup <HDF5 group "/subgroup" (1 members)>
subgroup/mydataset <HDF5 dataset "mydataset": shape (3, 3), type "<f8">
'''
3 数据属性
HDF5的一个最好的特点是,你可以在它描述的数据旁边存储元数据。所有的group和dataset都支持附加的名为属性的数据位。
属性是通过attrs代理对象来访问的,它同样实现了字典接口。
dset2.attrs['num']=10
dset2.attrs['num']
#10
4 读取HDF
f = h5py.File('mytestfile.hdf5', 'r')
可以用前面的visit判断有哪些group,哪些dataset
查看某一个dataset的信息
f['mydataset']
#<HDF5 dataset "mydataset": shape (3, 3), type "<f8">
f['mydataset'][:]
'''
array([[0.63732368, 0.358404 , 0.10496838],
[0.4456806 , 0.91168004, 0.01802787],
[0.57025919, 0.67295068, 0.87238499]])
'''
参考资料:Quick Start Guide — h5py 3.6.0 documentation
python h5py详解_will-wil的博客-CSDN博客_h5py
以上是关于python 笔记:h5py的主要内容,如果未能解决你的问题,请参考以下文章