2

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

这可以做到吗?

4

2 回答 2

4

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

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

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

于 2016-11-20T07:35:32.193 回答
3

查看xarray 文档中的这一部分。没有一种.sel方法允许赋值。

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

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

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

于 2016-11-19T19:43:23.950 回答