在特定坐标下插入DataArray
问题描述:
我想用一些关于单元的元信息来填充DataArray以将其添加到数据集中。在特定坐标下插入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"
可以这样做吗?
答
它不sel_points
工作,但不是与.sel
分配可以使用.loc
索引,例如,
airtemps.some_data.loc[dict(lat=75., lon=200.)] = "New data"
注意,如果点(lat=75., lon=200.)
在airtemps
已经存在,这只会工作。 Xarray不支持在新坐标处插入值,因为无法使用基于NumPy的数据结构高效完成此操作。如果您需要插入新值,则需要从头开始创建具有适当值的新xarray数据结构。
答
在xarray文档中查看this section。 .sel
方法都不允许分配。
任何转让应使用正常的索引来完成:扩展xarray的分配由坐标标注能力
airtemps.some_data[dict(lat=0, lon=0)] = 4
已经有议论,但我们没有这样的功能目前。在此之前,我们只需要提供一个标签来索引位置映射,然后按照上面的语法。
谢谢!越来越近。有没有办法用新坐标包含数据(例如lat = 74.5)? (顺便说一句:你创建的辉煌模块!) – TomTom101
@shoyer,很好!我总是忘记'loc'索引器方法。 – jhamman
不,我恐怕不可能在新的坐标处插入数值。我更新了我的答案以澄清。 – shoyer