【python基础】h5py库的基本使用
一个HDF5文件是一种存放两类对象的容器:dataset和group. Dataset是类似于数组的数据集,而group是类似文件夹一样的容器,存放dataset和其他group。在使用h5py的时候需要牢记一句话:groups类比词典,dataset类比Numpy中的数组。...
·
HDF(Hierarchical Data Format)是一种通用的跨平台、压缩性优异、灵活的数据存储结构,常用作科学数据的保存。而h5py则是python提供的HDF文件处理库。
h5py的核心概念包括:
(1)文件file,作为一种层次化的数据容器,file可理解为树根;
(2)组group,存储的索引,相当于树的节点;
(3)数据集dataset,索引对应的存储数据,相当于节点内存储的数据;
(4)属性attr,用来存储额外的小块元数据。
h5py支持层次化的group嵌套,如果将其类比于json格式,则group为key(索引),而group为value(数据)。
下面给出其典型的应用案例:
import numpy as np
import h5py
# 1. 写入
f = h5py.File('./demo.h5', 'w') # 打开文件,更推荐用with管理上下文
print(f.name) # '/', file相当于root
print(f.keys()) # <KeysViewHDF5 []>, 所有group的名称,相当于索引
# 直接赋值
A = np.random.rand(100,100)
f['numpy_A'] = A # f[key]=value直接赋值,存储对应的group(numpy_A)和dataset(A)
for name in f: # 等同于for name in f.keys()
print(name) # numpy_A
# 创建组
f.create_group('group_1') # 和numpy_A同级
print(f.keys()) # numpy_A group_1
# 组内通过赋值的方式创建dataset
B = np.random.rand(200,200)
f['group_1']['numpy_B'] = B
# 通过create_dataset创建dataset
f['group_1'].create_dataset('mydataset', (10, 10), dtype='f')
# 通过/直接同时创建group和dataset
f.create_dataset('group_2/mydataset2', (20,20), dtype='f')
print(f.keys()) # group_1 group_2 numpy_A
# 创建属性
f.attrs['name'] = 'Mia'
# 关闭,存储
f.close()
# 2. 读取
f = h5py.File('./demo.h5', 'r')
print(f.keys())
# 获取属性的key
print(f.attrs.keys())
# 递归遍历
f.visit(lambda x:print(x))
更多推荐
已为社区贡献1条内容
所有评论(0)