Python 数据存储之 h5py详解
简介
h5py是Python中用于读取和写入HDF5文件格式数据的软件包,HDF指的是层次型数据格式(HDF: Hierarchical Data Format),主要用于存储和管理大数据集和复杂数据对象的工具。
h5py能够读写HDF5文件,并具有简单、自然和Pythonic的API。它支持Numpy数组、Python字符串等,并且能够保存Python对象的一些特定信息(如用户定义的元数据)。因此,h5py也经常被用作一个通用的数据存储文件格式。
安装
为了安装h5py,可以使用pip进行安装:
pip install h5py
安装完成后,可以开始使用h5py库。
使用h5py
创造一个HDF5文件
可以使用以下代码在Python中创建一个HDF5文件:
import h5py
# 创建HDF5文件
with h5py.File('data.h5', 'w') as f:
# 创建一个dataset
dset = f.create_dataset('mydataset', (100,), dtype='i')
# 填充dataset
dset[...] = range(100)
以上代码创建了一个名为“data.h5”的HDF5文件,并在其中创建了一个名为“mydataset”的dataset,它包含100个整数。
注:with
语句会在代码块执行完毕后自动完成文件的关闭操作,保证了程序的健壮性。
读取一个HDF5文件
import h5py
# 读取HDF5文件
with h5py.File('data.h5', 'r') as f:
# 读取名为“mydataset”的dataset
dset = f['mydataset']
# 打印dataset的所有属性
print(dset.attrs.keys())
# 打印dataset的形状和数据类型
print(dset.shape, dset.dtype)
# 打印dataset的所有值
print(dset[...])
以上代码读取了名为“data.h5”的HDF5文件,并读取了其中名为“mydataset”的dataset,然后打印了dataset的属性、形状、数据类型和所有值。
示例1:利用h5py储存Numpy数组
import h5py
import numpy as np
# 创建numpy数组
data = np.random.randint(0, 100, size=(100, 100))
# 存储numpy数组
with h5py.File('data.h5', 'w') as f:
dset = f.create_dataset('mydataset', data=data)
以上代码创建了一个100x100的Numpy数组,然后使用h5py将Numpy数组写入到名为“data.h5”的HDF5文件中。
示例2:存储List和Dict
import h5py
# 定义一个List和Dict
mylist = [1, 2, 3, 4, 5]
mydict = {'a': 1, 'b': 2, 'c': 3}
# 存储List和Dict
with h5py.File('data.h5', 'w') as f:
f.create_dataset('mylist', data=mylist)
for key, value in mydict.items():
f.attrs[key] = value
以上代码定义了一个List和一个Dict,然后使用h5py将它们写入到名为“data.h5”的HDF5文件中。其中,List被存储为名为“mylist”的dataset,而Dict则使用文件的属性(attributes)存储。
总结
本文简要介绍了如何使用h5py库进行HDF5文件格式的读写,以及h5py和Numpy之间的配合应用,同时提供了两个应用示例。h5py的灵活性和Pythonic API使其被广泛应用于人工智能及科学大数据相关领域。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据存储之 h5py详解 - Python技术站