使用 pytables 访问 hdf5 中的数组子集

Access subset of array in hdf5 with pytables

我是 pytables 的新手。

我正在尝试访问存储在 hdf5 文件中的数组。

例如数组的尺寸为 100x2000x5000,现在,我试图仅访问尺寸 2 和尺寸 3 的前 100 个数据条目,类似于“[:,0,0]”。 但是在 pytables 的文档中我只找到以下示例:

import tables
h5file = tables.open_file('file.h5', 'r')
data = h5file.root.array.read()
h5file.close()

如何告诉读取模块只加载数组的一个子集?

在此先感谢您的帮助!

您可以使用以下任何一种方法来读取数组的子集。所有方法 return 数据作为当前风格的对象(与 Array 相同的数据类型)。

array0 = Array.read(start=None, stop=None, step=None)

您还可以使用 NumPy-style 切片。 NumPy-style 点和布尔选择以及支持 花哨的索引。 [后者使用指定轴中的索引列表。]
示例如下。

array1 = array[0:4]           # simple selection
array2 = array[:,0]           # slice selection 
array3 = array[1, ::2, 1:4]   # general slice selection

具体根据您的要求,可以使用以下方式。 (它读取第 2 个和第 3 个索引的前 100 个数据条目,即轴 1 和轴 2):

your_slice = h5file.root.array[:,0:100,0:100]           # slice selection