替代 npz 文件?

Alternative to npz files?

我使用以 Python .npz 格式存储的数组。我有很多这样的文件,它们都共享相同的公共结构:文件名 my_file_var1_var2_var3.npz 包含以下项目(所有数组都是 32 位浮点数):

拥有超过 1000 个文件非常烦人,每个文件最终占用大约 4Mb。我在想将它们转移到一个容器中会很好,比如 HDF5/Pytables 或类似的。不同的数组只是数组,没有优先顺序或任何东西(它们实际上是矩阵或将对其进行操作的向量堆栈)。同时需要每个文件名的所有数组。

对于哪种格式更适合检索与 var1var2var3 相关联的数组,是否有任何建议,即便携且高效的存储

使用 PyTables 以 HDF5 格式存储您的数据集在这里绝对有意义(例如参见 [​​=13=])。

它不仅会将您的所有数据放在同一个容器中,而且您还可以获得压缩、高效查询以及可能更快的 read/write 使用 BLOSC 的访问。

因为您的项目具有可变形状,所以您不能将所有相同类型的项目放在一个公共数组中。所以你有几个选择,

  1. 将每个数组保存为单独的 HDF5 节点
  2. 如果 N 是可变的但有一些合理的最大值 N_max(例如 20 或 30),您可以创建大小为 (number_of_items, ..., Nmax) 的唯一数组并填充您不需要的元素默认情况下需要零。令人惊讶的是,如果您需要同时查询所有项目,这可能会更有效率,并且如果您使用压缩,您将不会看到大小开销。