Python 将netCDF数据聚合为平均值、最小值、最大值

Python 将netCDF数据聚合为平均值、最小值、最大值,python,dask,netcdf,python-xarray,Python,Dask,Netcdf,Python Xarray,我有几个netCDF文件可以下载,由创建。有四个文件,每个文件大约1GB 我是这样读文件的 import xarray as xr dset = xr.open_dataset("~/.../ERA5land1.nc") 这让我 <xarray.Dataset> Dimensions: (latitude: 61, longitude: 101, time: 87647) Coordinates: * latitude (latitude) float32 31.0

我有几个
netCDF
文件可以下载,由创建。有四个文件,每个文件大约1GB

我是这样读文件的

import xarray as xr

dset = xr.open_dataset("~/.../ERA5land1.nc")
这让我

<xarray.Dataset>
Dimensions:    (latitude: 61, longitude: 101, time: 87647)
Coordinates:
  * latitude   (latitude) float32 31.0 30.9 30.8 30.7 ... 25.3 25.2 25.1 25.0
  * longitude  (longitude) float32 79.0 79.1 79.2 79.3 ... 88.7 88.8 88.9 89.0
  * time       (time) datetime64[ns] 1981-01-01T01:00:00 ... 1990-12-31T23:00:00
Data variables:
    t2m        (time, latitude, longitude) float32 dask.array<shape=(87647, 61, 101), chunksize=(10, 61, 101)>
Attributes:
    Conventions:  CF-1.6
    history:      2020-03-10 16:47:13 GMT by grib_to_netcdf-2.16.0: /opt/ecmw...
这会导致计算机冻结并最终崩溃。试图
chunk
数据也不起作用

    dset = xr.open_dataset("~/.../ERA5land1.nc", chunks = {'time': 10})
    mean = dset.mean()
这不会崩溃,但我明白了

<xarray.Dataset>
Dimensions:  ()
Data variables:
     t2m      float32 dask.array<shape=(), chunksize=()>

尺寸:()
数据变量:
t2m浮点32 dask.array

我想知道如何计算每个网格单元的
min
max
mean
,并将其存储在具有相同规格的新
netCDF
文件中。

这可以使用我的包nctoolkit(通过pip:,用户指南:)解决

这使用CDO作为后端,因此应该能够轻松处理数据

所需的代码与您提供的代码非常相似

import nctoolkit as nc
dset = xr.open_dataset("~/.../ERA5land1.nc")
mean = dset.mean()
如果需要xarray阵列,可以执行以下操作:

mean.to_xarray()

如果试图获取每个网格单元的平均值,则需要指定要计算的尺寸。尝试
mean=dset.mean(dim='time')
mean=dset['t2m'].mean(dim='time')
mean.to_xarray()