当文件和数据集都具有“时间”组件时,使用xarray打开多文件数据集

时间:2018-08-06 13:51:59

标签: python python-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连接数据集的方式,我似乎也无法弄清楚。

1 个答案:

答案 0 :(得分:1)

使用预处理功能将使您可以执行后续操作。预处理功能在连接之前应用,因此您可以在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

取决于文件的格式,您可能必须进一步清除* * * * * /usr/bin/flock -n /tmp/ms.lockfile /bin/bash /path/to/my/script/myShellScript.sh 中的数据集。