我不确定如何表达这个问题,但我希望这个例子可以解释它。
我每天都有一系列的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连接数据集的方式,我似乎也无法弄清楚。
答案 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
中的数据集。