在特定坐标处插入 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 数据结构。
我正在尝试使用有关单元格的一些元信息填充 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 数据结构。