在特定坐标处插入 DataArray

Insert into DataArray at specific coordinate

我正在尝试使用有关单元格的一些元信息填充 DataArray,以将其添加到数据集中。

airtemps = xr.tutorial.load_dataset('air_temperature')
airtemps = airtemps.sel(time=slice('2013-01-01', '2013-12-31'))

我可以根据现有维度设置一整套新数据:

airtemps['some_data'] = ([ 'lat', 'lon'], np.random.rand(25,53))

我想要的是在给定坐标处添加一个数据点,基本上

airtemps.some_data.sel_points(lat=75., lon=200.) = "New data"

这可以做到吗?

查看 xarray 文档中的 this section.sel 方法中的 None 允许赋值。

任何赋值都应该使用正常的索引来完成:

airtemps.some_data[dict(lat=0, lon=0)] = 4

有人讨论过扩展 xarray 按坐标标签分配的能力,但我们目前没有该功能。在那之前,我们只需要想出一个标签来索引位置映射,然后按照上面的语法。

它不适用于 sel_points,但您可以使用 .loc 索引器代替 .sel 赋值,例如

airtemps.some_data.loc[dict(lat=75., lon=200.)] = "New data"

请注意,这仅在 (lat=75., lon=200.) 点已存在于 airtemps 中时才有效。 Xarray 不支持在新坐标处插入值,因为使用其基于 NumPy 的数据结构无法有效地完成此操作。如果需要插入新值,则需要从头开始创建具有适当值的新 xarray 数据结构。