h5py:对可调整大小的数据集

时间:2017-04-05 09:22:39

标签: python arrays hdf5 raster h5py

我有一系列栅格数据集,我想将它们组合成一个HDF5文件。

每个栅格文件都将转换为尺寸为3600 x 7000的数组。由于我总共有659个文件,因此最终数组的形状为3600 x 7000 x 659,对于我(大量)的RAM来说太大了。

我对python和HDF5本身很新,但基本上我的方法是创建一个具有所需二维维度的数据集,然后迭代地将文件读入数组并附加到数据集。

我打算根据我对数据集的计划使用来使用分块(这会减少I / O时间)。由于它是一个光栅时间序列,我打算将三维数组划分为前两个维度的块,同时始终将数据集完全与第三维一起处理。

我知道我可以使用maxshape定义新数据集的maxshape = (rows,cols,None),以便在新的rasterfiles(新时间步长)进入时保持数据集可以与第三维一起调整。

所以现在我的问题是,如何相应地指定分块? chunks=True给出了太小的块。 因此,我设置chunks=(nrow,ncol,359) ...使用nrow和ncol作为块的维度。

有没有办法在块中考虑调整大小和第三维(如chunks = (ncor,ncol,None))?

如果不是(并且第三个维度超过指定的块,但不到它的两倍),则是以块的形式读取数据的最佳(最快)方式:

array1 = data[0:nrow,0:ncol,0:659]
array2 = data[0:nrow,0:ncol,659:]

非常感谢!

PS:如果有人也建议如何更有效或更优雅地做到这一点,我也非常感谢任何提示

缬氨酸

0 个答案:

没有答案