将netCDF数据汇总为平均值、最小值、最大值。

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

我有几个 netCDF 可下载的文件 此处创立者 Coperinucs. 有四个文件,每个文件约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...

计算平均数应该是直截了当的,根据。文件

    mean = dset.mean()

导致电脑冻结,最后崩溃。试图 chunk 数据也不工作。

    dset = xr.open_dataset("~/.../ERA5land1.nc", chunks = {'time': 10})
    mean = dset.mean()

这不会崩溃,但我得到这个

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

我想知道如何才能计算出 min, maxmean 并将其存储在一个新的 netCDF 文件的规格相同。

python dask netcdf python-xarray
1个回答
0
投票

这个问题可以用我的包nctoolkit来解决(可以通过pip.xr.dset.xr.open_dataset("~......"))。https:/pypi.orgprojectnctoolkit。,用户指南。https:/nctoolkit.readthedocs.ioenlatestinstalling.html。).

这使用CDO作为后端,所以应该能够轻松处理你的数据。

所需的代码和你提供的非常相似。

import nctoolkit as nc
dset = xr.open_dataset("~/.../ERA5land1.nc")
mean = dset.mean()

如果你想要一个xarray数组,你可以这样做。

mean.to_xarray()
© www.soinside.com 2019 - 2024. All rights reserved.