本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档。

h5py简单介绍

h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集),下面来看下如何创建组和数据集。

1. 创建一个h5py文件

import h5py
#要是读取文件的话,就把w换成r
f=h5py.File("myh5py.hdf5","w")

在当前目录下会生成一个myh5py.hdf5文件

2. 创建dataset数据集

import h5py
f=h5py.File("myh5py.hdf5","w")
#deset1是数据集的name,(20,)代表数据集的shape,i代表的是数据集的元素类型
d1=f.create_dataset("dset1", (20,), 'i')
for key in f.keys():print(key)print(f[key].name)print(f[key].shape)print(f[key].value)

输出:

dset1
/dset1
(20,)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

这里我们仅仅创建了一个存放20个整型元素的数据集,并没有赋值,默认全是0,如何赋值呢,看下面的代码。

import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")d1=f.create_dataset("dset1",(20,),'i')
#赋值
d1[...]=np.arange(20)
#或者我们可以直接按照下面的方式创建数据集并赋值
f["dset2"]=np.arange(15)for key in f.keys():print(f[key].name)print(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 12 13 14]

如果我们有现成的numpy数组,那么可以在创建数据集的时候就赋值,这个时候就不必指定数据的类型和形状了,只需要把数组名传给参数data。

import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")
a=np.arange(20)
d1=f.create_dataset("dset1",data=a)
for key in f.keys():print(f[key].name)print(f[key].value)

输出:

/dset1
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

现在把这几种创建的方式混合写下。看下面的代码

import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")
#分别创建dset1,dset2,dset3这三个数据集
a=np.arange(20)
d1=f.create_dataset("dset1",data=a)d2=f.create_dataset("dset2",(3,4),'i')
d2[...]=np.arange(12).reshape((3,4))f["dset3"]=np.arange(15)for key in f.keys():print(f[key].name)print(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组

import h5py
import numpy as np
f=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+/名字,是不是有点文件夹的感觉!继续看下面的代码,你会对group和dataset的关系进一步了解。

import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")#创建组bar1,组bar2,数据集dset
g1=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和一个数据集dset2
c2=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
.............
[]
[]

--------------------- 
作者:neu_张康 
来源:CSDN 
原文:https://blog.csdn.net/csdn15698845876/article/details/73278120 
版权声明:本文为博主原创文章,转载请附上博文链接!

python3-h5py入门讲解相关推荐

  1. python库——h5py入门讲解

    转自:http://blog.csdn.net/csdn15698845876/article/details/73278120 h5py简单介绍 h5py文件是存放两类对象的容器,数据集(datas ...

  2. [Python学习笔记]h5py入门讲解

    本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5p ...

  3. python制作图片数据集 h5py_python库——h5py入门讲解

    转载自http://m.blog.csdn.net/csdn15698845876/article/details/73278120 h5py简单介绍 h5py文件是存放两类对象的容器,数据集(dat ...

  4. python3入门-终于懂得python3快速入门教程

    跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...

  5. Python3.5入门到项目实战(104天课程)

    今天给大家分享一套详细的教程[Python3.5入门到项目实战(104天)],希望能够帮助到正在学Python的你,好了,话不多说,直接上资源: 资源目录 第01部分- 计算机与Linu基础(01-0 ...

  6. Python3快速入门(十四)——Pandas数据读取

    Python3快速入门(十四)--Pandas数据读取 一.DataFrame IO 1.CSV文件 pandas.read_csv(filepath_or_buffer, na_values='NA ...

  7. 【直播】耿远昊:Pandas入门讲解(安泰第四届数据科学训练营)

    Pandas入门讲解 直播信息 主讲人:耿远昊,Datawhale成员,joyful-pandas作者. 直播时间:2021年04月07日 20:00~21:00 直播内容: 时间序列中的必知必会: ...

  8. Python3快速入门(三)——Python3标准数据类型

    Python3快速入门(三)--Python3标准数据类型 一.Python3标准数据类型 Python3 中有六种标准数据类型: A.Number(数字) B.String(字符串) C.List( ...

  9. python3菜鸟教程-总算理解python3中文入门教程

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  10. python3下载教程-《Python3从入门到放弃》视频教程

    <Python3从入门到放弃>视频教程2016年 001.01.python编程环境配置 001.02.IDE的又一选择PyCharm 002.01.name 002.02.namespa ...

最新文章

  1. git stash pop_git常用命令行背诵并默写(全)
  2. 今天整理了一些老作品
  3. Mac 编译安装 Redis-3.2.3
  4. 百度前端学院-基础学院-第四课
  5. spring mvc学习(10):eclipse的环境前maven配置
  6. 给萌新的Flexbox简易入门教程
  7. php 请求 响应,发送http响应后继续处理php
  8. 各历史版本NDK下载地址
  9. 安信可BT-02 Mesh组网的AT指令集
  10. 八类网线和七类网线的区别_超6类和7类网线的区别
  11. HSB”、lab、CMYK、RGB有什么区别
  12. 一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)
  13. python实现飞机大战源代码+素材+项目分析
  14. python红色的颜色表达式_python – 排序(十六进制)颜色以匹配彩虹
  15. 商业智能bi是什么意思?
  16. 富文本粘贴word文档内容图片处理
  17. 2007年9月运势之水瓶座
  18. 点计算机图标就自动关机了,为什么点计算机的关机图标不能自动关机
  19. php面试英文自我介绍范文带翻译,英语自我介绍范文带翻译
  20. DEA-SBM最佳投入产出权向量很多0怎么回事

热门文章

  1. 二三维GIS平台的优势和应用场景
  2. 西绪福斯黑洞(123数字黑洞)——java实现
  3. 三个故事告诉你,活得简单,才能活得自由!
  4. 经济危机下如何抉择去与留
  5. bzoj1018[SHOI2008]堵塞的交通traffic
  6. 光线传媒与360合作敲定!双方建合资视频公司
  7. mysql ngram全文检索引擎
  8. 一则比较深奥的爱情寓言故事
  9. 阿里达摩院招聘人脸识别研究型实习生和应届博士生招聘
  10. ttfb 指 耗时_网页响应慢,waiting(TTFB)时间过长,接口返回耗时,数据库占用CPU 90%以上...