【python基础】h5py库的基本使用

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())      # , 所有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))

你可能感兴趣的:(python,HDF,h5py)