#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, но не нашел, как вычислить среднее значение параллельно или что-то в этом роде и избежать добавления данных в оперативную память во время процесса вычисления.