小编VGP*_*VGP的帖子

h5py:如何读取 hdf5 文件的选定行?

是否可以在不加载整个文件的情况下从 hdf5 文件中读取给定的一组行?我有相当大的 hdf5 文件,其中包含大量数据集,这是我想到的减少时间和内存使用量的示例:

#! /usr/bin/env python

import numpy as np
import h5py

infile = 'field1.87.hdf5'
f = h5py.File(infile,'r')
group = f['Data']

mdisk = group['mdisk'].value

val = 2.*pow(10.,10.)
ind = np.where(mdisk>val)[0]

m = group['mcold'][ind]
print m
Run Code Online (Sandbox Code Playgroud)

ind 不给出连续的行,而是给出分散的行。

上面的代码失败了,但它遵循切片 hdf5 数据集的标准方法。我得到的错误信息是:

Traceback (most recent call last):
  File "./read_rows.py", line 17, in <module>
    m = group['mcold'][ind]
  File "/cosma/local/Python/2.7.3/lib/python2.7/site-packages/h5py-2.3.1-py2.7-linux-x86_64.egg/h5py/_hl/dataset.py", line 425, in __getitem__
    selection = sel.select(self.shape, args, dsid=self.id)
  File "/cosma/local/Python/2.7.3/lib/python2.7/site-packages/h5py-2.3.1-py2.7-linux-x86_64.egg/h5py/_hl/selections.py", line 71, in select
    sel[arg]
  File "/cosma/local/Python/2.7.3/lib/python2.7/site-packages/h5py-2.3.1-py2.7-linux-x86_64.egg/h5py/_hl/selections.py", line 209, in __getitem__ …
Run Code Online (Sandbox Code Playgroud)

python numpy dataset h5py

4
推荐指数
1
解决办法
7184
查看次数

标签 统计

dataset ×1

h5py ×1

numpy ×1

python ×1