Nctoolkit 对相同数据重复 select

Nctoolkit repeated select on same data

我正在查看非洲的每月降水量数据,并希望将数据分成子区域。有没有办法在同一个 ds 上执行多个 selections/crops? 这是我的代码:

fn1 = 'cru_monthly_africa.nc'
ds1 = nt.open_data(fn1)
#Selecting a specific variable, time period and area and then calculating the field mean for each month:
ds1.select(variables = "pre")
ds1.select(years = range(1981, 2018))
ds1.crop(lon = [20, 27], lat = [-35, -33.5])
ds1.spatial_mean()
ds1.tmean("month")
#Export to xarray
ds1csc_xr = ds1.to_xarray()

#Next region:
ds1.select(variables = "pre")
ds1.select(years = range(1981, 2018))
ds1.crop(lon = [17, 20], lat = [-35, -31])
ds1.spatial_mean()
ds1.tmean("month")
#Export to xarray
ds1swc_xr = ds1.to_xarray()

我现在想做完全相同的事情,但使用一组不同的纬度和经度坐标并将其写入单独的 xarray(即每个子区域都是它自己的 xarray)。如果我尝试在我的脚本中重复代码但更改输出 xr 的坐标和名称,它只会给我与第一个 xr 相同的值。 我不熟悉使用 python 和 nctoolkit 处理带有气候数据的 netcdf 文件,希望得到任何指导。

您想修改代码,以便在裁剪之前复制 ds1 数据集。现在你正在裁剪 ds1 两次。

fn1 = 'cru_monthly_africa.nc'
ds1 = nt.open_data(fn1)
#Selecting a specific variable, time period and area and then calculating 
#the field mean for each month:
ds1.select(variables = "pre")
ds1.select(years = range(1981, 2018))
ds2 = ds1.copy()
ds1.crop(lon = [20, 27], lat = [-35, -33.5])
ds1.spatial_mean()
ds1.tmean("month")
#Export to xarray
ds1csc_xr = ds1.to_xarray()

#Next region:
ds2.crop(lon = [17, 20], lat = [-35, -31])
ds2.spatial_mean()
ds2.tmean("month")
#Export to xarray
ds2swc_xr = ds2.to_xarray()

或者,您可以将第二次裁剪替换为:

#Next region:
ds1 = nt.open_data(fn1)
ds1.select(variables = "pre")
ds1.select(years = range(1981, 2018))
ds1.crop(lon = [17, 20], lat = [-35, -31])
ds1.spatial_mean()
ds1.tmean("month")
#Export to xarray
ds1swc_xr = ds1.to_xarray()

在计算时间方面可能没有太大差异。