H5py,一个Python大规模数据存储的高效库!

文摘   2024-11-23 19:26   河南  

H5py,搞定你的巨量数据!

H5py这玩意儿,简单说就是让你在Python里玩转HDF5文件。HDF5这可是个好东西,专门为海量数据存储设计的,像什么科学计算、金融分析、图像处理,都能用上。想想看,几百G的数据,用普通的文本文件或数据库,那读取速度,啧啧啧,简直慢得让人怀疑人生。但用H5py,那速度,嗖嗖的!

HDF5文件就像个高级的容器,可以装各种各样的数据,而且还能给数据打标签,方便查找。它支持各种数据类型,从简单的数字到复杂的数组,都能轻松搞定。更厉害的是,它还能把数据压缩,节省存储空间。

先装上再说!用pip install h5py 就行了。导入模块:

import h5py

创建HDF5文件

创建HDF5文件就像新建个Word文档一样简单:

f = h5py.File('my_data.hdf5', 'w') # 'w'表示写入模式

数据集Dataset

Dataset是HDF5里最常用的东西,可以理解为NumPy数组的加强版。创建Dataset也很简单:


import numpy as np

data = np.random.random((100, 100)) # 创建一个100x100的随机数组

dset = f.create_dataset('my_dataset', data=data)

属性Attributes

就像给文件加标签一样,我们可以给Dataset添加属性:


dset.attrs['description'] = '这是一个随机数据集'

dset.attrs['unit'] = 'meters'

读取数据

读取数据就像从字典里取值一样方便:

read_data = f['my_dataset'][:] # 注意要用[:]取全部数据

print(read_data)

关闭文件

用完记得关门,释放资源:

f.close()

HDF5文件还可以创建群组,就像文件夹一样,可以把Dataset和其他的群组组织起来。

grp = f.create_group('my_group')

sub_dset = grp.create_dataset('sub_dataset', data=np.zeros((50,50)))

这样,我们就创建了一个名为“my_group”的群组,并在里面创建了一个名为“sub_dataset”的Dataset。访问它也很简单:

data_from_group = f['my_group/sub_dataset'][:]

print(data_from_group)

H5py支持各种数据类型,包括整数、浮点数、字符串等等。你甚至可以存储自定义的数据类型。温馨提示:数据类型要搞清楚,不然读取的时候可能会出问题。

H5py支持多种压缩算法,可以有效减小文件大小,加快读取速度。

compressed_dset = f.create_dataset('compressed_data', data=data, compression=“gzip”)

对于超大数据集,可以采用分块存储,只读取需要的数据块,进一步提高效率。

chunked_dset = f.create_dataset('chunked_data', data=data, chunks=(10, 10))

举个栗子,假设你要处理卫星遥感图像数据,几百G的文件,用普通方法读取,那得等到猴年马月。用H5py,把数据分块存储,再配合压缩算法,读取速度嗖嗖的,处理起来也方便多了。

新手容易犯的错误就是忘了关闭文件。记住,用完一定要f.close()

H5py这玩意儿,处理大数据真是个利器。学会了它,以后处理海量数据就不用愁了!记住,熟能生巧,多练练,自然就掌握了。

翔宇风
精彩纷呈,引人入胜。
 最新文章