如何用2D x/y和1D时间坐标重新生成3D数据数组?

2024-10-16 17:17:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用维度(t, y, x)重新生成一个数据立方体,其中t是1d,x/y是2d,使用t_new/y_new/x_newall 1d将其重新生成到另一个立方体上

问题是当用2d坐标定义DataArray时,必须同时定义逻辑(xy)和物理(xcyc)坐标。然后,在应用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坐标被正确地视为物理坐标。。。我怀疑是因为它被定义为一维数组。你知道吗

总之,当使用DataArray.interp(x=x_new, y=y_new)时,x_newy_new应该映射到xcyc。。。如果这个插值应该以不同的方式处理,我还没有看到任何地方提到过!你知道吗


Tags: 数据importnew定义物理逻辑da插值