沿2维同时连接xarray DataArrays

时间:2018-07-14 05:23:23

标签: python numpy python-xarray

我有一个很大的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 x 8的矩阵(其中一个“补丁”为np.nan),另外三个补丁分别对应于它们各自的DataArrays 。

我一直在尝试使用xarray将其自动化,但是到目前为止,我还没有成功。我最接近的尝试是使用xr.concat

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

这将产生以下图像,这显然是错误的: enter image description here

请注意,在我的情况下,所有补丁都是加扰的,因此我不能真正依靠特定顺序进行连接。例如,在这里,我可以做d=xr.concat([xr.concat([a,b], dim="x"), c], dim="y"),但这仅仅是因为我知道顺序。

PS:这可能与this question有关,尽管我不清楚这个问题实际上在问什么。

1 个答案:

答案 0 :(得分:0)

发现我们可以使用combine_first的顺序应用程序执行此操作。这并不理想,因为在给定大量DataArray的情况下,我必须迭代应用它,但这已经足够了:

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

enter image description here