Rob*_*Rob 1 python python-xarray
我不知道如何表达这个问题,但我希望这个例子可以解释它。
我每天都有一系列 netcdf 文件的数据。每个文件都包含数据的时间维度,作为 30 天的预测。
如果我使用以下方法读取一年的数据:
data=xarray.open_mfdataset(files, concat_dim='None', autoclose='True')
Run Code Online (Sandbox Code Playgroud)
然后我得到:
Dimensions: (None: 365, lat: 110, lon: 100, time: 395)
Run Code Online (Sandbox Code Playgroud)
我只对每个文件的 time = 0 时的值感兴趣,即对于 file = 0,我想要 time = 0 对于 file = 360,我想要 time = 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', ...)
Run Code Online (Sandbox Code Playgroud)
根据文件的格式,您可能需要进一步清理preprocess.