为了账号安全,请及时绑定邮箱和手机立即绑定

读取行的最佳HDF5数据集块形状

读取行的最佳HDF5数据集块形状

我有一个合理的大小(压缩后的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行很容易容纳在内存中,所以我看不到任何好处。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 905 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信