3

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

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

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

是否有任何关于哪种格式可以更好地检索与 和 关联的数组的建议var1var2以及var3存储的便携和高效

4

1 回答 1

2

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

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

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

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