Уменьшите размер больших файлов с несколькими xarray до среднего

#netcdf #python-xarray

Вопрос:

Ищете эффективный способ вычисления среднего значения большого файла с несколькими xarray.

     # open netcdf multi netcdf files
    era5_nc = xr.open_mfdataset(era5Files, parallel=True)
    print(era5_nc)
    
    <xarray.Dataset>
    Dimensions:    (latitude: 361, longitude: 1440, time: 359400)
    Coordinates:
    * longitude  (longitude) float32 -180.0 -179.8 -179.5 ... 179.2 179.5 179.8
    * latitude   (latitude) float32 90.0 89.75 89.5 89.25 ... 0.75 0.5 0.25 0.0
    * time       (time) datetime64[ns] 1979-01-01 ... 2019-12-31T23:00:00
   Data variables:
    msl        (time, latitude, longitude) float32 dask.array<chunksize=(8760, 361, 1440), 
  meta=np.ndarray>
  Attributes:
    Conventions:  CF-1.6
    history:      2021-05-17 12:06:51 GMT by grib_to_netcdf-2.16.0: /opt/ecmw...


# resample from hourly to daily
mslpd = era5_nc.msl.resample(time ='1D').mean(keep_attrs=True)
# mean over a given period
mslpd_climato = mslpt.sel(time = slice('1979-01-01', '2010-12-01')).mean('time',keep_attrs=True)

# save the computed netcdf 
mslpd_climato.to_netcdf('/content/drive/MyDrive/data/' "mslp_climato_NH.nc") 
 

Сеанс прерывается во время этого последнего шага (12 ГБ оперативной памяти). Есть какие-нибудь советы по оптимизации оперативной памяти для этого расчета?

Комментарии:

1. Вы смотрели на xarray.pydata.org/en/stable/user-guide/dask.html ?

2. Да, я проверил dask, но не нашел, как вычислить среднее значение параллельно или что-то в этом роде и избежать добавления данных в оперативную память во время процесса вычисления.