删除重复时间,但保留最大值 xarray

Drop duplicate times, but keep max value xarray

关于如何在 xarray 数据集或 dataaray 中删除重复时间,有几种不同的解决方案。但是,我还没有看到任何描述基于值的丢弃时间的问题或示例。我想优先丢弃时间,只保留那个时间的最大值。

我的数据由两个数据数组组成:data1 包含 2020 年 7 月 12 小时分辨率的数据,data2 包含 2020 年 7 月 24 小时分辨率的数据。

data1
xarray.DataArray 'tp' (time:62, latitude:137, longitude:261)

data2
xarray.DataArray 'tp' (time:31, latitude:137, longitude:261)

我尝试做一些我认为可能适用于此解决方案的事情,使用这样的循环以一种循环的方式进行:

test=xr.concat([data1, data2], dim='time')
max_vals=[]
for i in test['time']:
    print(i)
    max_=test.sel(time=i).max(dim='time').expand_dims(time=[i])
    max_vals.append(max_)

我 thought/wanted 发生的是 .sel() 命令将 select 所有时间对应于当前在循环中 selected 的时间。在这个具体的例子中,在 00 点的时间应该有两个值,但在 12 点只有一个值。但是,它抛出了一个错误。关于如何完成这样的事情有什么想法或想法吗?

我确信我完全理解您想要的合并行为。我的理解是,您有 ds1ds2 具有重叠的时间索引,并且您想要 dsds1ds2 的合并,并且它为重叠索引提供 max(ds1, ds2) ?

在这种情况下,你可以这样写:

ds = xr.concat([ds1, ds2], dim='new_dim').max(dim='new_dim')

我是否正确理解了你的问题?