在特定坐标下插入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数据结构。

+0

谢谢!越来越近。有没有办法用新坐标包含数据(例如lat = 74.5)? (顺便说一句:你创建的辉煌模块!) – TomTom101

+0

@shoyer,很好!我总是忘记'loc'索引器方法。 – jhamman

+0

不,我恐怕不可能在新的坐标处插入数值。我更新了我的答案以澄清。 – shoyer

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

任何转让应使用正常的索引来完成:扩展xarray的分配由坐标标注能力

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

已经有议论,但我们没有这样的功能目前。在此之前,我们只需要提供一个标签来索引位置映射,然后按照上面的语法。

+0

不幸的是,索引器不喜欢任务。我错过了文档中的“数据操作”这一部分,这让我认为这不是我想要的方式。 – TomTom101

+0

@ TomTom101 - 我已经更新了我的答案。在我的第一个例子中,我应该用整数索引器替换你的浮点数。 – jhamman