首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xarray combine_by_coords返回单调全局索引错误

Xarray combine_by_coords返回单调全局索引错误
EN

Stack Overflow用户
提问于 2020-07-09 01:52:25
回答 1查看 2.9K关注 0票数 10

我正在尝试使用combine_by_coords组合两个空间xarray数据集。这两个数据集是相邻的两个块。所以有重叠的坐标。在重叠区域中,其中一个数据集的变量值是nan。

我使用了"combine_by_coords“和compat='no_conflicts‘选项。然而,它返回沿维数y误差的单调全局索引。看起来它以前是一个问题,但它是固定的(这里)。所以我真的不知道为什么我会犯这个错误。下面是一个示例( netcdf块是这里):

代码语言:javascript
复制
import xarray as xr

print(xr.__version__)
>>>0.15.1

ds1=xr.open_dataset('Tile1.nc')
ds2=xr.open_dataset('Tile2.nc')
ds = xr.combine_by_coords([ds1,ds2], compat='no_conflicts')
>>>...
 ValueError: Resulting object does not have monotonic global indexes along dimension y

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-12 10:45:24

这不是一个错误,它是抛出错误,它应该抛出你的输入。但是,我可以看到,这些文档并没有非常清楚地说明为什么会发生这种情况!

combine_by_coordscombine_nested做了两件事:它们连接(使用xr.concat)和合并(使用xr.merge)。merge将相同大小的变量分组,concat将不同大小的变量连接到另一个变量的末端。级联步骤不应该处理部分重叠的坐标,因此combine函数具有相同的限制。

该错误是对输入的明确拒绝:“您给了我重叠的坐标,我不知道如何连接这些坐标,所以我会拒绝它们。”通常情况下,这是有意义的--当重叠坐标不是NaNs时,对于要选择哪些值就不太清楚了。

在您的例子中,您要求它执行定义良好的操作,而文档中关于合并重叠坐标这里的讨论意味着compat='no_conflicts'将处理这种情况。不幸的是,这只适用于xr.merge,而不是xr.concat,因此它也不适用于combine_by_coords。这绝对是令人困惑的。

可以泛化combine函数来处理所描述的场景(坐标的重叠部分完全由非NaN值指定)。请打开一个问题,提出这个功能,如果你想看到它。

(问题#3150是关于其他问题的,在处理“每个数据集之间不变化的坐标维度”方面的实际错误。)

相反,您需要做的是首先减少重叠。这应该不难--想必你知道(或者可以确定)你的重叠有多大,而且你所有的NaNs都在一个数据集中。只需使用带片的.isel()方法即可。一旦您摆脱了重叠的NaNs,那么您应该能够很好地组合它(并且您也不需要指定compat )。如果您使用combine_by_coords作为使用open_mfdataset打开许多文件的一部分,那么编写修整函数可能会更容易,首先使用preprocess参数对open_mfdataset应用该函数。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62806175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档