我有一个很大的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/预测”、“1/预测”…,但如果有合理的替代方案,我不希望必须转换这些数据。你知道吗
谢谢你, 玛丽
目前没有回答
相关问题 更多 >
编程相关推荐