【发布时间】:2020-02-27 03:49:34
【问题描述】:
我有一个带有全局数据的 xarray.DataArray。例如:
import numpy as np
import xarray as xr
nlat=46
nlon=90
lat=np.linspace(-90, 90, nlat, endpoint=True)
lat=xr.DataArray(lat, dims=('lat',), coords={'lat':lat},
attrs={'units':'degree north', 'name':'latitude'})
lon=np.linspace(0, 360, nlon, endpoint=False)
lon=xr.DataArray(lon, dims=('lon',), coords={'lon':lon},
attrs={'units':'degree east', 'name':'longitude'})
d=xr.DataArray(np.random.rand(nlat, nlon),
dims=('lat', 'lon'), coords={'lat':lat, 'lon':lon})
我现在想将数据分割成一个区域。大多数情况下这很容易:
aus = d.sel(lat=slice(-44,-10), lon=slice(110, 155))
问题在于环绕边框的区域,例如:
gb = d.sel(lat=slice(50, 60), lon=slice(351, 3))
当然,这会返回一个空数组,如 351>3。
目前,我帮助自己移动网格,然后选择:
d['lon'].values[d['lon'].values>180] -= 360
d = d.sortby(d['lon'])
gb = d.sel(lat=slice(50, 60), lon=slice(-9, 3))
没有更好的办法吗?
【问题讨论】:
-
Dataset.roll 帮助网格转移
标签: python python-xarray