HDF5文件的介绍及python将大量图片文件存储为hdf5文件方便训练

本文介绍了HDF5文件格式及其在科学数据存储中的应用,特别是H5的dataset和group概念。展示了如何使用Python将大量图片数据转换为HDF5文件,以及如何读取这些文件。通过实例,比较了HDF5与npy文件在读取速度上的优势。
摘要由CSDN通过智能技术生成

HDF5文件介绍

HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF 小组维护下继续发展。当前流行的版本是 HDF5。HDF5 拥有一系列的优异特性,使其特别适合进行大量科学数据的存储和操作,如它支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等,详见其官方介绍:What is HDF5?

H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件。由美国超级计算中心与应用中心研发的文件格式,用以存储和组织大规模数据.

H5将文件结构简化成两个主要的对象类型:
1 数据集dataset,就是同一类型数据的多维数组
2 组group,是一种容器结构,可以包含数据集和其他组,若一个文件中存放了不同种类的数据集,这些数据集的管理就用到了group

直观的理解,可以参考我们的文件系统,不同的文件存放在不同的目录下:
1.目录就是hdf5文件中的group,描述了数据集DataSet的分类信息,通过group有效的将多种dataset进行管理和划分,类似于文件夹下面的子文件夹
2.文件就是hdf5文件中的dataset,表示具体的数据。
3.一个hdf5文件下可以同时存在group和Dataset,就像文件夹下可以同时存在文件和子文件夹。

下图就是数据集和组的关系:

Image

创建hdf5文件中的dataset几种方式

import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")
#分别创建dset1,dset2,dset3这三个数据集

#方法1:有现成的numpy数组,可以在创建数据集的时候就赋值,不必指定数据的类型和形状了,只需要把数组名传给参数data。
a=np.arange(20)                              
d1=f.create_dataset("dset1",data=a)

#方法2:dset2是数据集的name,(3,4)代表数据集的shape,i代表的是数据集的元素类型
d2=f.create_dataset("dset2",(3,4),'i')   # 先创建大小固定的存储空间
d2[...]=np.arange(12).reshape((3,4))    # 再赋值

# 方法3: 直接按照下面的方式创建数据集并赋值
f["dset3"]=np.arange(15)

for key in f.keys():
    print(f[key].name)
    print(f[key].value)
f.close()
/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]


c:\users\14497\appdata\local\programs\python\python37\lib\site-packages\ipykernel_launcher.py:19: H5pyDeprecationWarning: dataset.value has been deprecated. Use dat
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值