nc文件选择时间,年内平均,双线性插值
for m in MODEL_NAME:
ds=xr.open_dataset(r"J:\09 FUTURE_BUDYKO\CMIP_LAI\\"+m+"\Scenario_historical.nc")
ds00 = ds.sel(time=slice(str(1982), str(2014)))
ds_year = ds00.groupby('time.year').mean(dim='time')
olr = xr.open_dataset(r"J:\09 FUTURE_BUDYKO\GLASS_LAI\YEARLY\GLASS_LAI_YR 1986.nc")
LAI02 = (ds_year.interp(lat=olr.lat.values, lon=olr.lon.values))
所有时间平均
ds00=ds.sel(time=slice(str(j), str(j+19)))
ds01=ds00["lai"].data
ds02=np.where(ds01<0,np.NaN,ds)
ds_mean=np.mean(ds02,axis=0,dtype=np.float32)
pandas时间
daterange = pd.date_range(start=str(j)+'0101', periods=1, freq='Y')
转换经度
def LATLON(ds):
lon_name = 'lon'
ds['longitude_adjusted'] = xr.where(
ds[lon_name] > 180,
ds[lon_name] - 360,
ds[lon_name])
ds = (
ds
.swap_dims({lon_name: 'longitude_adjusted'})
.sel(**{'longitude_adjusted': sorted(ds.longitude_adjusted)})
.drop(lon_name))
ds = ds.rename({'longitude_adjusted': lon_name})
return ds
拟合函数
from scipy import optimize
def f_1(x, A, B):
return A * x + B
A1_train, B1_train = optimize.curve_fit(f_1, x_train, y_train)[0]
for i in range(1982,2019):
ds=xr.open_dataset(r"J:\14 DRY_WET\02 LAI\LAI_MON\LAI_MON "+str(i)+".nc")
ds = ds.assign_coords(time=pd.date_range(start=str(i)+'0101', periods=12, freq='M'))
ds01=ds.sel(time=slice(pd.to_datetime(str(i)+'0401'),pd.to_datetime(str(i)+'1101')))
print(ds01)
ds01.mean(dim="time")