0

我是使用 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()

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

提前感谢您的帮助!

4

1 回答 1

1

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

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

您还可以使用 NumPy 样式的切片。支持 NumPy 样式的点和布尔选择以及精美的索引。[后者使用指定某个轴上的索引列表。]
下面的示例。

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
于 2020-08-14T13:51:11.467 回答