本文只是简单的对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”)
1
2
3
在当前目录下会生成一个myh5py.hdf5文件

  1. 创建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]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
这里我们仅仅创建了一个存放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]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
如果我们有现成的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]
1
2
3
4
5
6
7
8
9
10
11
12
现在把这几种创建的方式混合写下。看下面的代码

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]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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]]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
注意观察数据集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

[]
[]
————————————————

[Python学习笔记]h5py入门讲解相关推荐

  1. Python学习笔记之入门基础

    课程链接:Python入门教程--基础阶段_哔哩哔哩_bilibili Python学习笔记 注释 单行注释: * 多行注释: 1.多行前面加# 2."""注释信息&qu ...

  2. Python学习笔记:入门(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  3. Python学习笔记:入门(2)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Python学习笔记1入门+简单结构+数据类型+常用操作符

    Python应用范围 操作系统 WEB 3D动画 企业应用 云计算 Python3.0和以前的版本有大量的不兼容问题 用IDLe界面写的Python代码: Python 3.8.6 (tags/v3. ...

  5. Python 学习笔记——入门

    文章目录 〇.Python 是什么 一.推荐的教程 二.这篇学习笔记适合什么人 三.环境 1. 操作系统 对于 Windows 对于 Ubuntu 对于其他操作系统 2. Python 对于 Wind ...

  6. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  7. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  8. 【Python学习笔记】cs231nPython Numpy教程

    [Python学习笔记]cs231nPython Numpy教程 回顾经典教程cs231n,完成assignments觉得很困难,感觉自己python基础语法掌握的不是很熟,就顺藤摸瓜找了cs231n ...

  9. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

最新文章

  1. 雀姬 服务器维护,《雀姬》功能界面介绍(多图)
  2. 全卷积神经网路【U-net项目实战】Unet++
  3. web app会遇到那些问题
  4. Java实现单词树(trie)
  5. JavaScript 中的 this
  6. 2018你那计算机考试新题型,2018考研新题型考察点和解题步骤
  7. text-overflow:ellipsis溢出显示省略号兼容所有浏览器的解决办法
  8. Delphi中Chrome Chromium、Cef3学习笔记(三)
  9. php 导出tables,jquery+php实现导出datatables插件数据到excel的方法_php技巧
  10. 三层交换机SVI实现不同VLAN通信.
  11. 2020年天津市二级分类土地利用数据(矢量)
  12. FlashFXP中文破解解压版
  13. mysql jdbc 绑定变量_「MySQL高级特性——绑定变量」- 海风纷飞Blog
  14. Egret MovieClip2
  15. python爬取琳琅社区整站视频
  16. 27岁研究生毕业年龄大吗?
  17. Sverlet案例小萌神服务器端
  18. 同个网络计算机之间怎么共享,在局域网环境下的多台电脑之间如何实现文件共享需求呢?...
  19. 计算机信息系统打印输出的涉密文件,计算机信息系统打印输出的涉密文件,应当按相应的()文件进行管理。...
  20. 阿里云服务器安装jdk8版本

热门文章

  1. 第14章WEB14-JDBC案例篇
  2. Linux共享内存(二)
  3. Linux下Web网站压力测试工具Webbench
  4. 一次PostgreSQL行估算偏差导致的慢查询分析
  5. vue项目中处理左侧导航栏问题的分享
  6. [转]jQuery选择器总结
  7. 12.10课堂学习----实例化、构造方法案例
  8. 如何对DevExpress ASPxGridView进行分组排序?
  9. UIImageView 上下和左右翻转 不是旋转
  10. IE6、IE7、Firefox无提示关闭窗口的代码