带有Python图像的H5文件:想要随意选择而无需替换

时间:2016-05-24 18:17:37

标签: python file vectorization hdf5 h5py

我熟悉了python中H5的基础知识。我现在想做的是两件事:

  • 将图像(numpy数组)写入H5文件。
  • 一旦完成,就能随机挑出$ M $。

这里的含义如下:我想在一个H5文件中写入总共$ N = 100000 $ numpy数组(图像)。一旦完成,我想随机选择H5文件中的$ M = 50 $图像,然后读取它们。然后,我想随机选择另一个$ M = 50 $,并将其读入等等,直到我完成所有$ N $图像。 (基本上,样品没有更换)。

有优雅的方法吗?我目前正在尝试将每个图像存储为一个单独的键值对,但我不确定这是否是最优雅的。

另一个解决方案是存储$ N $图像的整个卷,然后从那里随机选择,但我不确定它是否优雅,因为它需要我在整个块中读取。

1 个答案:

答案 0 :(得分:1)

无需替换的优雅采样方法是计算数字1..N(numpy.random.permutation)的随机排列,然后使用大小为M的块。

在h5py文件中存储数据有点武断。您可以使用单个高维数据集或包含N个二维数据集的组。由你决定。我实际上更喜欢单独使用二维数据集(提供更多灵活性)并使用Group.iteritems迭代它。