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


将图像(numpy数组)写入H5文件。
完成后,可以随机挑选$ M $。


这里的含义如下:我想将总共$ N = 100000 $ numpy数组(图像)写入一个H5文件。完成之后,我想从H5文件中随机选择说$ M = 50 $张图像,然后读取它们。然后,我想随机选择另一个$ M = 50 $,并同样读取它们,以此类推,直到浏览完所有$ N $图像为止。 (基本上,样品无需更换)。

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

另一种解决方案是存储$ N $图像的全部量,然后从那里随机选择,但是我也不知道这是否很优雅,因为这需要我读取整个块。

最佳答案

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

将数据存储在h5py文件中是任意的。您可以使用单个较高维的数据集或包含N个二维数据集的组。由你决定。实际上,我更希望分别使用二维数据集(为您提供更大的灵活性)并使用Group.iteritems对其进行迭代。

关于python - H5文件以及Python中的图片:想要随机选择而不替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37421035/

10-13 06:21