我有一个合理的大小(压缩后的18GB)HDF5数据集,并希望优化读取行的速度。形状为(639038,10000)。我将多次读取整个数据集中的选定行(例如〜1000行)。所以我不能使用x:(x + 1000)来切片行。使用h5py从内存不足的HDF5中读取行已经很慢,因为我必须传递一个排序列表并求助于高级索引。有没有一种方法可以避免花式索引,或者我可以使用更好的块形状/大小?我已经阅读了一些经验法则,例如1MB-10MB的块大小,并且选择的形状与我正在阅读的内容保持一致。但是,构建大量具有不同块形状的HDF5文件进行测试在计算上非常昂贵且非常缓慢。对于每个〜1,000行的选择,我立即将它们求和以获得长度10,000的数组。我当前的数据集如下所示:'10000': {'chunks': (64, 1000), 'compression': 'lzf', 'compression_opts': None, 'dtype': dtype('float32'), 'fillvalue': 0.0, 'maxshape': (None, 10000), 'shape': (639038, 10000), 'shuffle': False, 'size': 2095412704}我已经尝试过的东西:用大块形状(128,10000)重写数据集(据我估计约为5MB)太慢了。我看了dask.array进行了优化,但是由于〜1,000行很容易容纳在内存中,所以我看不到任何好处。
添加回答
举报
0/150
提交
取消