在特定坐标处插入DataArray

时间:2016-11-19 14:12:38

标签: python python-xarray

我正在尝试使用一些有关单元格的元信息填充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"

可以这样做吗?

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

在xarray文档中查看this section.sel方法都不允许分配。

任何作业都应该使用普通索引来完成:

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

有人谈到扩展xarray通过坐标标签分配的能力,但我们目前没有这个功能。在那之前,我们只需要提供一个标签来索引位置映射,然后按照上面的语法进行操作。