我熟悉了python中H5的基础知识。我现在想做的是两件事:
这里的含义如下:我想在一个H5文件中写入总共$ N = 100000 $ numpy数组(图像)。一旦完成,我想随机选择H5文件中的$ M = 50 $图像,然后读取它们。然后,我想随机选择另一个$ M = 50 $,并将其读入等等,直到我完成所有$ N $图像。 (基本上,样品没有更换)。
有优雅的方法吗?我目前正在尝试将每个图像存储为一个单独的键值对,但我不确定这是否是最优雅的。
另一个解决方案是存储$ N $图像的整个卷,然后从那里随机选择,但我不确定它是否优雅,因为它需要我在整个块中读取。
答案 0 :(得分:1)
无需替换的优雅采样方法是计算数字1..N(numpy.random.permutation
)的随机排列,然后使用大小为M的块。
在h5py文件中存储数据有点武断。您可以使用单个高维数据集或包含N个二维数据集的组。由你决定。我实际上更喜欢单独使用二维数据集(提供更多灵活性)并使用Group.iteritems
迭代它。