h5py库
2024-10-07 16:46:29
参考文献:http://docs.h5py.org/en/latest/high/dataset.html
h5py文件存放数据集(dataset)和组(group)。
dataset类似数组类的数据集合,和numpy的数组差不多。
group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。
”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集).
”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集).
一、下面来看下如何创建group和dataset
import h5py
#如果是读取文件的话,w换成r
f = h5py.File("myh5py.hdf5","w");
二、创建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]
三、给数据集赋值
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]
三、将现成的数据集传给参数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]
四、混合创建数据集dataset
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]
六、创建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]]
注意观察:现在这两个数据集都在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
.............
[]
[]
八、高级特征
用关键词compression来指定压缩滤波器,而滤波器的可选参数使用关键词compression_opt来指定:
dset = f.create_dataset("zipped", (100, 100), compression="gzip")
最新文章
- EXISTS 引入子查询时,在选择列表中只能指定一个表达式
- ios-改变button四个角的弧度
- 一个关于el中获取对象属性的错误
- 无法启动T-SQL 调试
- IDFA问题,苹果上传问题。improper Advertising identifier [IDFA] Usage.
- BOOST 线程完全攻略 - 基础篇
- 网易云课堂_程序设计入门-C语言_第七周:指针与字符串_2GPS数据处理
- MAC本如何优雅的创建定时任务
- 在TFS中通过程序动态创建Bug并感知Bug解决状态
- C/C++ 知识点---字符串函数
- RED_HAWK:基于PHP实现的信息收集与SQL注入漏洞扫描工具
- cmd命令报4048错误
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- echarts水球
- @ConfigurationProperties和@Value 注入
- Java知多少(29)覆盖和重载
- 删除所有已经停止的容器 docker rm $(docker ps -a -q)
- 自己写一个java的mvc框架吧(四)
- mysql 更新(二)安装和基本管理
- 2018.08.10 atcoder Median Sum(01背包)