如何使用 xarray.concat 解决内存问题

问题描述 投票:0回答:1

我有很多 xarray 文件,我想按时间连接它们。 每个文件大小约为 37GB。

Each file read-in was done using the open_mfdatasets

ds20_power = xr.open_mfdataset(filepaths[220:], concat_dim='Time', combine='nested', engine='zarr')

datasets=[ds_power, ds2_power, ds3_power, ds4_power,ds5_power, ds6_power, ds7_power,
ds8_power, ds9_power, ds10_power, ds11_power, ds12_power, ds13_power, ds14_power, 
ds16_power, ds17_power, ds18_power, ds19_power, ds20_power]

power_dataset=  xr.concat(datasets, dim="Time")

如何将所有文件连接在一起(总共 20 个),以便我在 RAM 限制(大约 300GB)的情况下按 Time 堆叠一个文件?如果有更优化的方法来保存这个大文件以减少进一步分析的读入时间

parallel-processing computer-science ram python-xarray
1个回答
0
投票

您可以使用 xarray 的 zarr 后端,它具有追加模式

to_zarr()

这里是 xarray 的文档,其中包括一个简单的示例。您可以通过单独打开 netcdfs 并将其附加到 zarr-archive 来修改此示例。

© www.soinside.com 2019 - 2024. All rights reserved.