【问题标题】:H5 file with images in Python: Want to randomly select without replacementPython中带有图像的H5文件:想要随机选择而不替换
【发布时间】:2016-09-22 02:34:46
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python file vectorization hdf5 h5py


    【解决方案1】:

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

    在 h5py 文件中存储数据有点随意。您可以使用单个高维数据集或包含 N 个二维数据集的组。由你决定。实际上,我更喜欢单独拥有二维数据集(为您提供更大的灵活性)并使用 Group.iteritems 对其进行迭代。

    【讨论】:

    • 谢谢 Trilarion,当没有人回应时,我想通了。 :-/ 无论如何,谢谢!
    猜你喜欢
    • 2020-10-15
    • 2021-01-15
    • 2021-10-05
    • 2019-03-06
    • 2019-12-01
    • 2013-06-13
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多