gpt4 book ai didi

python - 使用 h5py 从大文件读取而不将整个文件加载到内存中

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:47 28 4
gpt4 key购买 nike

是否从数据集中读取而不是立即加载整个内容到内存中[整个内容将无法放入内存]并获取数据集的大小没有在 python 中使用 h5py 加载数据?如果不是,怎么办?

h5 = h5py.File('myfile.h5', 'r')
mydata = h5.get('matirx') # are all data loaded into memory by using h5.get?
part_of_mydata= mydata[1000:11000,:]
size_data = mydata.shape

谢谢。

最佳答案

get(或索引)获取对文件中数据集的引用,但不加载任何数据。

In [789]: list(f.keys())
Out[789]: ['dset', 'dset1', 'vset']
In [790]: d=f['dset1']
In [791]: d
Out[791]: <HDF5 dataset "dset1": shape (2, 3, 10), type "<f8">
In [792]: d.shape # shape of dataset
Out[792]: (2, 3, 10)
In [793]: arr=d[:,:,:5] # indexing the set fetches part of the data
In [794]: arr.shape
Out[794]: (2, 3, 5)
In [795]: type(d)
Out[795]: h5py._hl.dataset.Dataset
In [796]: type(arr)
Out[796]: numpy.ndarray

d 数据集类似于数组,但实际上不是 numpy 数组。

获取整个数据集:

In [798]: arr = d[:]
In [799]: type(arr)
Out[799]: numpy.ndarray

它必须读取多少文件才能获取你的切片取决于切片、数据布局、分块和其他通常不受你控制的事情,你不必担心。

另请注意,在读取一个数据集时,我不会加载其他数据集。这同样适用于团体。

http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data

关于python - 使用 h5py 从大文件读取而不将整个文件加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949085/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com