Nownuri,两者都提供了读取部分文件的方法。
通过
pytables
,有几种方法可以将表读入numpy数组。这些方法包括。
table.read()
lets you slice the data,
table.read_coordinates()
reads a set [noconsecutive] coordinates
(aka rows),
table.read_where()
read a set of based on a search condition
都支持一个可选的
field=''
参数,用来读取基于字段名的单列数据(像numpy recarry)。
关于完整的细节,请阅读Pytables文档。
你可以在这里找到它。
PyTables用户指南
h5py
有类似的(但不同的)方法,基于numpy数组切片的惯例。关于h5py的细节,请访问这里的文档。
H5py 文档
下面是每个人的非常简单(自成一体)的例子。我以写模式创建数据,然后以读模式重新打开文件。你可能只需要每个例子的后半部分(如何读取数据)。另外HDF5文件与创建方法无关:你可以用h5py或pytables读取任何一个HDF5文件(与它们的创建方式无关)。
Pytables方法。
这个方法展示了用pytables访问表的两种不同方式。第一种使用 "自然命名 "来获取h5_i_arr,第二种使用
get_node()
方法来读取
h5_x_arr
。
import tables as tb
import numpy as np
with tb.File('SO_57342918_tb.h5','w') as h5f:
i_arr=np.arange(10)
x_arr=np.arange(10.0)
my_dt = np.dtype([ ('i_arr', int), ('x_arr', float) ] )
table_arr = np.recarray( (10,), dtype=my_dt )
table_arr['i_arr'] = i_arr
table_arr['x_arr'] = x_arr
my_ds = h5f.create_table('/','ds1',obj=table_arr)
# read 1 column using field= parameter:
with tb.File('SO_57342918_tb.h5','r') as h5f:
h5_i_arr = h5f.root.ds1.read(field='i_arr')
h5_x_arr = h5f.get_node('/ds1').read(field='x_arr')
print (h5_i_arr)
print (h5_x_arr)
h5py method:
import h5py
import numpy as np
with h5py.File('SO_57342918_h5py.h5','w') as h5f:
i_arr=np.arange(10)
x_arr=np.arange(10.0)
my_dt = np.dtype([ ('i_arr', int), ('x_arr', float) ] )
table_arr = np.recarray( (10,), dtype=my_dt )
table_arr['i_arr'] = i_arr
table_arr['x_arr'] = x_arr
my_ds = h5f.create_dataset('/ds1',data=table_arr)
# read 1 column using numpy slicing:
with h5py.File('SO_57342918_h5py.h5','r') as h5f: