分配长度为一的新维度

assign new dimension of length one

我有一个 da.dims==() 的 DataArray。我可以分配一个坐标da.assign_coords(foo=42)。我想添加一个长度为 1 的相应维度,这样 da.dims==("foo",) 和相应的坐标将是 foo=[42]。我无法使用 assign_coords(foo=[42]),因为这会导致错误消息 cannot add coordinates with new dimensions to a DataArray.

如何将长度为 1 的新维度分配给 DataArray?我可以做类似 DataArray(da.values.reshape([1]), dims="foo", coords={"foo": [42]}) 的事情,但我想知道是否有一种方法不需要复制整个对象。

您可以使用 xarray.concat 来实现:

da = xarray.DataArray(0, coords={"x": 42})
xarray.concat((da,), dim="x")