【问题标题】:Alternative to npz files?替代 npz 文件?
【发布时间】:2015-04-30 10:21:56
【问题描述】:

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

  • 二维数组(N=11,Ns=2000)
  • 一个二维数组 (12, N )
  • 二维数组 (300, N)
  • 一个二维数组(300,Ns)
  • 一个浮点数
  • 一个整数

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

关于什么格式可以更好地检索与var1var2var3 关联的数组,是否有任何建议,即便携且存储高效

【问题讨论】:

    标签: python arrays hdf


    【解决方案1】:

    在这里使用 PyTables 以 HDF5 格式存储数据集肯定是有意义的(例如,请参见 example)。

    它不仅会将您的所有数据放在同一个容器中,而且您还可以通过 BLOSC 获得压缩、高效查询和更快的读/写访问。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多