gpt4 book ai didi

python - 如何合并具有冲突坐标的 xArray 数据集

转载 作者:太空狗 更新时间:2023-10-30 01:00:13 26 4
gpt4 key购买 nike

假设我有两个数据集,每个数据集包含一个不同的感兴趣变量和不完整(但不冲突)的索引:

In [1]: import xarray as xr, numpy as np
In [2]: ages = xr.Dataset(
{'ages': (['kid_ids'], np.random.rand((3))*20)},
coords={'kid_names':(['kid_ids'], ['carl','kathy','gail']), 'kid_ids': [10,14,16]})
In [3]: heights = xr.Dataset(
{'heights': (['kid_ids'], np.random.rand((3))*160)},
coords={'kid_names':(['kid_ids'], ['carl','keith','gail']), 'kid_ids': [10,13,16]})

这创建了两个数据集,它们看起来应该很好地合并:

In [4]: ages
Out[4]:
<xarray.Dataset>
Dimensions: (kid_ids: 3)
Coordinates:
* kid_ids (kid_ids) int32 10 14 16
kid_names (kid_ids) <U5 'carl' 'kathy' 'gail'
Data variables:
ages (kid_ids) float64 13.28 1.955 4.327
In [5]: heights
Out[5]:
<xarray.Dataset>
Dimensions: (kid_ids: 3)
Coordinates:
* kid_ids (kid_ids) int32 10 13 16
kid_names (kid_ids) <U5 'carl' 'keith' 'gail'
Data variables:
heights (kid_ids) float64 115.0 38.2 31.65

但他们没有 - 尝试 ages.merge(heights) 会导致 ValueError:

ValueError: conflicting value for variable kid_names:
first value: <xarray.Variable (kid_ids: 4)>
array(['carl', nan, 'kathy', 'gail'], dtype=object)
second value: <xarray.Variable (kid_ids: 4)>
array(['carl', 'keith', nan, 'gail'], dtype=object)

删除坐标 kid_names 解决问题:

In [7]: ages.reset_coords('kid_names', drop=True).merge(
heights.reset_coords('kid_names', drop=True))
Out[7]:
<xarray.Dataset>
Dimensions: (kid_ids: 4)
Coordinates:
* kid_ids (kid_ids) int64 10 13 14 16
Data variables:
ages (kid_ids) float64 0.4473 nan 6.45 6.787
heights (kid_ids) float64 78.42 78.43 nan 113.4

似乎坐标像 DataArrays 一样被处理,因为任何不相同的值都会引发错误。但是他们不应该更像基本坐标一样处理吗?扩展到两个指数的超集?或者我应该做其他手术吗?

我在 python 3.5 上使用 xarray 0.7.2 和 numpy 1.10.4

最佳答案

目前这在 xarray 中不容易实现,但应该很容易!

事实上,我认为在大多数情况下合并任何不冲突的值应该是安全的(除非用户要求更高的审查)。

我打开了一个 GitHub 问题来跟踪这个:https://github.com/pydata/xarray/issues/835

更新:merge 方法现在默认支持此功能(使用 compat='no_conflicts'),因此 ages.merge (高度) 应该可以正常工作。

关于python - 如何合并具有冲突坐标的 xArray 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36731870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com