【问题标题】:Drop duplicate times, but keep max value xarray删除重复时间,但保留最大值 xarray
【发布时间】:2021-10-25 22:45:30
【问题描述】:

关于如何在 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_)

我想/想要发生的是.sel() 命令将选择与当前在循环中选择的时间相对应的所有时间。在这个特定的示例中,应该有两个值在 00 小时,但在 12 小时只有一个。但是,它引发了错误。关于如何完成这样的事情有什么想法或想法吗?

【问题讨论】:

    标签: python python-xarray


    【解决方案1】:

    我注意到一定要完全理解你想要的合并行为。我的理解是你有ds1ds2 具有重叠的时间索引,并且你想要一个ds,它是ds1ds2 的合并,它为重叠索引提供max(ds1, ds2)

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

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

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

    【讨论】:

    • 这正是我想要的。没想到这样做。非常好。
    猜你喜欢
    • 1970-01-01
    • 2019-10-27
    • 2021-12-29
    • 2019-04-06
    • 2018-12-06
    • 1970-01-01
    • 2013-07-10
    • 2019-06-10
    • 1970-01-01
    相关资源
    最近更新 更多