# Python实际操作HDF5文档实例

> 作者/来源: UCloud 运营管理员
> 发布时间: 2022-12-28T09:03:00.000Z
> 分类: 其他
> 标签: AI, 存储, Python
> 原文链接: http://117.50.162.249:3000/yun/articles/1869

---

# Python实际操作HDF5文档实例

> 来源: https://www.ucloud.cn/yun/128839.html
> 作者: 89542767
> 发布日期: 发布于2022-12-28 17:03

本文关键给大家介绍了Python实际操作HDF5文档实例详细说明，感兴趣的小伙伴可以参考借鉴一下，希望可以有一定的帮助，祝愿大家多多的发展，尽早涨薪

　　前言

　　在Matlab操作HDF5文档中早已阐述了HDF5文档早已运用Matlab对它进行操控的方式。本文总的来说怎样在Python下应用HDF5文档。我们依然依照Matlab操作HDF5文件信息顺序排列，各是建立HDF5文档，载入数据信息，获取数据。

　　Python中的HDF5文档依靠h5py工具箱

　　更为关联的两大主要参数为shape和maxshape，很明显我希望数据的某个层面是能够拓展的，因此在maxshape中，将期待拓展的层面标识为None，别的层面和shape主要参数里边的相同。有一点值得关注的是，使用compression='gzip'之后，全部数据能被很大的缩小，对较大的数据十分再用，而且在数据信息读写能力得时候，无需客户显式的编解码。

```
　　h5file=h5py.File(filename,'w')
```

　　写数据

```
　　X=h5file.create_dataset(shape=(0,args.patch_size,args.patch_size),#数据集的维度
　　maxshape=(None,args.patch_size,args.patch_size),#数据集的允许最大维度
　　dtype=float,compression='gzip',name='train',#数据类型、是否压缩，以及数据集的名字
　　chunks=(args.chunk_size,args.patch_size,args.patch_size))#分块存储，每一分块的大小
```

　　使用上边的creat\_dataset创立了dataset之后，读写能力数据就犹如读写能力numpy二维数组相同便捷，例如上边的函数定义了数据'train'，其实就是自变量X之后，能够下边的方法去读写能力：

```
　　data=np.zeros((100,args.patch_size,arg))
　　X[0:100,:,:]=data
```

　　在前建立数据得时候，大家界定shape=(args.chunk\_size,args.patch\_size,args.patch\_size)，假如拥有更多的数据信息，该怎么办呢？

```
　　X.resize(X.shape[0]+args.chunk_size,axis=0)
```

　　能使用resize方的方法来拓展在maxshape中界定为None的那一个层面:

　　读取数据集

```
　　h=h5py.File(hd5file,'r')
　　train=h['train']
　　train[1]
　　train[2]
　　...
```

　　载入h5文件信息方式也很简单，最先运用h5py.File方法开启相匹配的h5文档，再将里边某个数据取下至自变量，对于这个自变量的载入就犹如numpy一样。

```
　　h=h5py.File(hd5file,'r')
　　train=h['train']
　　X=train[0:100]#一次从硬盘中读取比较多的数据，X将存储在内存中
　　X[1]#从内存中读取
　　X[2]#从内存中读取
```

　　可是上边的载入方式存在一些问题是每一次使用时(train[1],train[2])都要从硬盘读取数据信息，这也会造成载入速度较慢。1个比较靠谱的方法是什么，每一次从硬盘读取一个chunk\_size的数据信息，再将这类文件存储到内存条中，在需要时从内存条中载入，例如应用上面的方式：

　　综上所述，文章就给大家介绍到这里了，希望可以给大家带来帮助。