是否可以将少量元数据附加到numpy memmap文件中?
这就是我的全部问题。对于那些感兴趣的人,我的问题的详细信息如下:
我的数据集由一堆图像及其相应的多值标签组成,例如:
图像:50000 x 96 x 96 x 3 uint8s阵列
标签:一个50000 x 5的整数数组
我将这些保存到长度为50000的numpy记录数组中,并且dtype(96,96,3)uint8,(5,)int。这很好,因为我可以使用numpy.lib.format.open_memmap()
将这两个数组保存在一个memmap文件中。
缺少的一件事是能够向文件添加少量元数据。具体来说,我想将前N个条目指定为"训练集"剩余的50000 - N个条目作为"测试集"。因此,至少需要将单个int(N)添加到文件中。更一般地说,我想允许任意数量的分区,以及它们的分区名称。例如,对于3个分区,这将需要保存以下附加数据:
partition_names = ["testing set", "validation set", "training set"]
partition_sizes = [30000, 10000, 10000] # last number redundant
有没有办法将此元数据添加到memmap文件中,同时保留使用numpy.lib.open_memmap()
或类似方便的内容映射文件的能力?
答案 0 :(得分:0)
正如您在问题中所述,HDF5(或NetCDF)将是一种更适合存储具有多个数组,元数据等的复杂数据集的格式。
开发了HDF5,并用于许多高性能应用。如果你使用numpy memmap得到更糟糕的结果,这可能意味着你没有有效地使用它。
查看PyTables,例如blosc compression(参见例如this post)。如果有必要,您可以根据optimization tips中的说明微调一些事项(特别参见图3)。
答案 1 :(得分:0)
看起来像是一个非零的memmap关键字arg offset
和一些二进制文件编辑的组合就可以了。