我想重新定义一个维度为(t, y, x)
的数据多维数据集,其中t为1d,x/y
为2d,然后使用t_new/y_new/x_new
全部为1d。
问题是在定义具有二维坐标的DataArray
时,逻辑(x
和y
)和物理(xc
和yc
)坐标都必须是定义。然后,在应用DataArray.interp(x=x_new, y=y_new)
时,x_new/y_new
被视为逻辑坐标而不是物理坐标!
所以我的问题是:如何使用1d物理坐标对DataArray
(如下定义)进行重新插补/插值,该物理坐标应在xc/yc
(2d)而不是x/y
上运行?
这就是我在做什么:
import xarray as xr
da = xr.DataArray(cube, dims=['t', 'y', 'x'],
coords={'t': time,
'xc': (['y', 'x'], X),
'yc': (['y', 'x'], Y)})
da_interp = da.interp(x=x_new, y=y_new).interp(t=t_new)
请注意,t_new
坐标被正确地视为物理坐标...我怀疑是因为它被定义为一维数组。
总而言之,在使用x_new
时,应将y_new
和xc
映射到yc
和DataArray.interp(x=x_new, y=y_new)
上。以不同的方式,我从未见过任何提到的地方!