Python H5Py-有效访问参差不齐的数组的数组

时间:2019-02-23 20:29:46

标签: python numpy memory h5py ragged

我有一个很大的h5py文件,在大型数据集中有几个参差不齐的数组。数组具有以下类型之一:

# Create types of lists of variable length vectors
vardoub = h5py.special_dtype(vlen=np.dtype('double'))
varint = h5py.special_dtype(vlen=np.dtype('int8'))

在HDF5组(grp)中,我创建了N个锯齿状项目的数据集,例如:

d = grp.create_dataset("predictions", (N,), dtype=vardoub)

并用长的numpy数组(通常是数亿)填充d [0],d [1],...,d [N-1]。

创建这些数组效果很好,我的问题与访问有关。如果我想从其中一个数组访问一个切片,例如d [0] [5000:6000]或d [0] [50,89,100],内存使用率不断上升,我认为它正在读取数组的大部分内容;我可以看到物理内存使用量从5-6 GB迅速增加到32 GB(计算机上RAM的大小)。 p = d [0]将整个数组读到内存中,所以我认为这正在发生,然后正在对其进行索引。

有更好的方法吗? d [n]的类型是一个numpy数组,我无法引用它。我怀疑我可以重组数据,以便每个索引都有组,例如'0 / predictions','1 / predictions',...,但是如果有合理的选择,我希望不必将其转换。

谢谢你, 玛丽

0 个答案:

没有答案