我正在尝试使用一些有关单元格的元信息填充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"
可以这样做吗?
答案 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通过坐标标签分配的能力,但我们目前没有这个功能。在那之前,我们只需要提供一个标签来索引位置映射,然后按照上面的语法进行操作。