numpy 沿着2维同时连接xarray和DataArrays

pbpqsu0x  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(118)

我有一个很大的2D域,它被分解成几个xarray DataArrays中大小相等的2D补丁。例如,我的模拟是:

a=xr.DataArray(np.random.rand(4,4)+0, dims=("x", "y"), coords=dict(x=range(4), y=range(4)))
b=xr.DataArray(np.random.rand(4,4)+1, dims=("x", "y"), coords=dict(x=range(4,8), y=range(4)))
c=xr.DataArray(np.random.rand(4,4)+2, dims=("x", "y"), coords=dict(x=range(4,8), y=range(4,8)))

我试图把所有这些补丁一起重建域。因此,在上面的示例中,如果我要连接所有内容,我将在最后得到一个8 × 8的矩阵(其中一个“补丁”为np.nan),其他三个补丁对应于它们各自的DataArrays。
我一直在尝试用xarray自动化,但到目前为止还没有成功。我最接近的尝试是使用xr.concat

d=xr.concat([a,b,c], dim="x")
d.plot.imshow(x="x")

这会产生以下图像,这显然是错误的:

请注意,在我的例子中,补丁都是乱序的,所以我不能真正依赖于特定的顺序来连接。例如,在这里,我可以做d=xr.concat([xr.concat([a,b], dim="x"), c], dim="y"),但只是因为我知道顺序。
PS:这可能与this question有点关系,尽管我不清楚这个问题实际上问了什么。

vshtjzan

vshtjzan1#

发现您可以通过combine_first的顺序应用程序来实现这一点。这并不理想,因为我必须迭代应用它,给出一个巨大的DataArray s列表,但它已经足够好了:

d=a.combine_first(c).combine_first(b)

gijlo24d

gijlo24d2#

您还可以:

d = xr.combine_by_coords([a,b,c])

相关问题