python中的h5py开源库的使用(9—20190129)

文章目录:

  • 一、h5py模块介绍
  • 二、h5py模块使用
    • 1、h5py接口简单介绍
    • 2、h5py的使用样例

一、h5py模块介绍

本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档。

h5py简单介绍

一个HDF5文件是一种存放两类对象的容器:dataset和group. Dataset是类似于数组的数据集,而group是类似文件夹一样的容器,它好比python中的字典,有键(key)和值(value),存放dataset和其他group。在使用h5py的时候需要牢记一句话:groups类比字典dataset类比Numpy中的数组

HDF5的dataset虽然与Numpy的数组在接口上很相近,但是支持更多对外透明的存储特征,如:数据压缩误差检测分块传输

二、h5py模块使用

h5py创建的文件后缀名为:.hdf5

1、h5py接口简单介绍

h5py模块的使用主要分成两步走:

  • 1)创建.hdf5类型文件句柄(创建一个对象) # 读取文件把“w”改成“r”

f=h5py.File(“myh5py.hdf5”,“w”)

  • 2)创建数据(dataset)或组(group)

创建数据(dataset):

f.create_dataset(self, name, shape=None, dtype=None, data=None, **kwds)

创建组(group):

create_group(self, name, track_order=False)

2、h5py的使用样例

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

在当前目录下会生成一个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]

这里我们仅仅创建了一个存放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
.............
[]
[]

Reference:

1、https://blog.csdn.net/csdn15698845876/article/details/73278120

2、https://blog.csdn.net/yudf2010/article/details/50353292




♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

python中的h5py开源库的使用相关推荐

  1. 收藏,7个学习Python编程的最佳开源库!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 仅做学术分享,如有侵权,联系删除 转载于 :机器学习算法与Python实战 很多伙伴们 ...

  2. python中prettytable模块_Python库: PrettyTable 模块

    一 PrettyTable简介 PrettyTable是python中的一个第三方库,可用来生成美观的ASCII格式的表格: 二 PrettyTable安装 使用PIP即可十分方便的安装PrettyT ...

  3. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )

    文章目录 一.项目中配置 OpenSSL 开源库 二.OpenSSL 开源库解密参考代码 三.解密 dex 文件的 Java 代码 四.解密 dex 文件的 Jni 代码 参考博客 : [Androi ...

  4. (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联

    在我们的iOS程序中,经常会用到多个第三方的开源库,通常做法是去下载最新版本的开源库,然后拖拽到工程中. 但是,第三方开源库的数量一旦比较多,版本的管理就非常的麻烦.有没有什么办法可以简化对第三方库的 ...

  5. python web开发第三方库_以下属于Python中Web开发框架第三方库的是__________

    以下属于Python中Web开发框架第三方库的是__________ 答:Django 关于为何要敬业乐群,下列说法错误的是?() 答:敬业乐群可以作为提升我们学习.工作的效率和成果,乃至提升我们生命 ...

  6. python中好用的库(一)

    python中好用的库(一) 时间库-arrow 使用背景 日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外.但是,你知道在Python中有多少个相关 ...

  7. Python中如何安装pip库

    Python中如何安装pip库 新手第一次写博客(紧脏~) 建议先更新到最新的pip 官网附上www.python.org(官网上的东西是最基础也是最全的,还有Python基础教程!!!巴适得很) 我 ...

  8. Python中常用的第三方库

    Python中常用的第三方库 库名 用途 numpy n维数据表示和运算 matplotlib 二维数据可视化 numpy n维数据表示和运算 pil 图像处理 scikit-learn 机器学习和数 ...

  9. Python中运用的基础库

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

最新文章

  1. 用C#创建Windows服务(Windows Services)
  2. 在不同域中各个系统拥有自已独立的用户系统时的单点登录问题
  3. 您的数据中心UPS电池开关不能再选错和接错了
  4. C#调用WebService
  5. 如何进入python程序代码编辑环境_Python怎么打开代码编辑器 来学习吧
  6. Linux常用指令和系统管理命令总结
  7. python中turtle画树_python中turtle可以画树吗?怎么画?
  8. 查看Centos7 系统位数
  9. Z-Stack通过按键中断实现长按功能
  10. 公众号向特定用户主动推送消息_公众号助手——消息不仅可以群发,还不限制次数!...
  11. Centos VMware 克隆后 网络配置
  12. 人生最大的难题是认清自己
  13. SQL:with as用法
  14. 做外贸有套路,这几招“技巧组合拳“,让你轻松变高手
  15. 关于uploadify插件的一点坑坑洼洼
  16. Mysql基础——多表联查之连接查询
  17. 森林服务器能修改难度么,森林狩猎玩法全服开放,多项游戏内容优化调整
  18. 请给出太阳系各类引力参数,包括太阳、地球等星球的质量,距离,自转角度,公转速度等。...
  19. linux 磁盘管理3板斧,df、du、fdisk:Linux磁盘管理三板斧的使用心得(2)
  20. postsql将一个表数据插入到另一个表

热门文章

  1. 视频编码名词参数解释——非常全面详细
  2. 【堆栈应用一】一个数divided=几个最小质因数的乘积
  3. ASP.NET MVC 5 学习教程:添加控制器
  4. JavaScript学习总结二:js闭包(Closure)概念
  5. 简单的表单提交 by MVC 2
  6. python爬虫完整实例-python爬虫实战之爬取京东商城实例教程
  7. python读取txt文件第一行-python读取文本文件数据
  8. python画直方图代码-python的pyecharts绘制各种图表详细(附代码)
  9. 刚安装的python如何使用-Anaconda介绍、安装及使用教程
  10. python要学多久-python要学多久