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

以下是否从数据集中读取而不将整个事物一次性加载到内存中[整个事物将不适合内存]并获取数据集的大小而不使用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(或indexing)获取对文件的数据集的引用,但不加载任何数据.

In [789]: list(f.keys())

Out[789]: ['dset', 'dset1', 'vset']

In [790]: d=f['dset1']

In [791]: d

Out[791]:

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

它必须阅读以获取你的文件的具体方式取决于切片,数据布局,分块以及其他通常不受你控制的事情,并且不应该担心你.

另请注意,在读取一个数据集时,我没有加载其他数据集.同样适用于群组.

标签:python,hdf5,h5py

来源: https://codeday.me/bug/20190828/1753986.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值