当文件和数据集都具有"time"组件时,使用 xarray 打开多文件数据集



我不知道如何措辞这个问题,但我希望这个例子可以解释它。

我每天有一系列 netcdf 文件的数据。 每个文件都包含一个时间维度的数据,作为30天的预测。

如果我使用以下方法读取一年的数据:

data=xarray.open_mfdataset(files, concat_dim='None', autoclose='True')

然后我得到:

Dimensions:   (None: 365, lat: 110, lon: 100, time: 395)

我只对每个文件的时间 = 0 的值感兴趣,即对于文件 = 0,我希望文件 = 0 的时间 = 360,我想要时间 = 360,等等。

基本上,我认为我想做的只是从每个文件中读取时间组件的第一个元素,但我似乎无法弄清楚如何使用open_mfdataset做到这一点。

即使只是在阅读整个内容后删除不需要的值也可以,但由于连接数据集的方式open_mfdataset我似乎也无法弄清楚。

使用预处理函数将允许您执行所需的操作。预处理函数在串联之前应用,因此您可以在open_mfdataset步骤中使用它来重新格式化数据集。

def preprocess(ds):
    '''keep only the first timestep for each file'''
    return ds.isel(time=0)

data = xr.open_mfdataset(files, preprocess=preprocess, concat_dim='time', ...)

根据文件的格式设置方式,您可能需要进一步清理 preprocess 中的数据集。

最新更新