python库——h5py入门讲解
本文只是简单的对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
.............
[]
[]python库——h5py入门讲解的更多相关文章
- Python 数据处理库 pandas 入门教程
		Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ... 
- Python简单爬虫入门三
		我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ... 
- 顶级Python库
		绝不能错过的24个顶级Python库 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 事实 ... 
- 《Python编程:从入门到实践》分享下载
		书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ... 
- 想学Python不知如何入门,教你!
		一.入门引导 想必有很多小伙伴想学习Python,又不知道如何入门,总觉得学习一定要头悬梁,锥刺股!NO,今天给大家分享下如何轻松入门Python! 首先,我们要学习Python,那一定要和你 ... 
- Mysql C语言API编程入门讲解
		原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程. ... 
- python爬虫如何入门
		学爬虫是循序渐进的过程,作为零基础小白,大体上可分为三个阶段,第一阶段是入门,掌握必备的基础知识,第二阶段是模仿,跟着别人的爬虫代码学,弄懂每一行代码,第三阶段是自己动手,这个阶段你开始有自己的解题思 ... 
- Python 30分钟入门指南
		Python 30分钟入门指南 为什么 OIer 要学 Python? Python 语言特性简洁明了,使用 Python 写测试数据生成器和对拍器,比编写 C++ 事半功倍. Python 学习成本 ... 
- Python编程从入门到实践笔记——类
		Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ... 
随机推荐
- jQuery插件pagination.js源码解读
			pagination的github地址:https://github.com/gbirke/jquery_pagination 公司用的是1.2的版本,所以我就读1.2的了. jQuery.fn.pa ... 
- 如何正确在IDEA 里非maven或非SBT构建的项目中引入lib的jar包(图文详解)
			以下是我,手动的一个项目 假设,大家,还需要导入 导入spark的jar包:是安装主目录下的jars所有jar包和examples/jars包. 
- Storm编程入门API系列之Storm的Topology多个tasks数目控制实现
			前期博客 Storm编程入门API系列之Storm的Topology默认Workers.默认executors和默认tasks数目 Storm编程入门API系列之Storm的Topology多个Wor ... 
- Java微信公众平台开发(八)--多媒体消息回复之音乐
			我们上一篇写了关注出发图片的回复.想着在发送一次音乐,最后基于回复消息分类情况下,实现一个简单的只能话回复.先附一张大致效果图. 下面我们进入代码阶段. (一)修改消息转发器MsgDispatcher ... 
- mysql添加用户并赋予权限命令
			添加用户: create user 'gouge'@'localhost' identified by 'gouge'; 赋予权限: 给gouge 用户赋予所有test开头的数据库权限 (test% ... 
- 随机不重复的取数组元素,并赋值给div使用
			function pos(){ var items = $('.starone'); items.each(function () { var rand = getRandom(); $(this). ... 
- cookie和session基础以及在Django中应用
			看了会视频,终于搞懂了~ 1.cookie cookie:保存状态 cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器 ... 
- 使用vscode软件运行zebrajs框架小结
			最近在研究使用zebrajs框架,用vscode编辑器进行开发.vsc这个编辑器说起来还是很强大的,就是支持各种系统的多种语言开发.用于前端的话可以直接在编辑器上边调试javascript,就是需要n ... 
- Android 验证码倒计时两种方案
			使用 第一种方案:自定义控件 1.在布局中使用 <?xml version="1.0" encoding="utf-8"?> <Relativ ... 
- ABAP Netweaver, SAP Cloud Platform和Kubernetes的用户区分
			ABAP Dialog: Individual, interactive system access. System: Background processing and communication ... 
