删除重复时间,但保留最大值 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 点只有一个值。但是,它抛出了一个错误。关于如何完成这样的事情有什么想法或想法吗?
我确信我完全理解您想要的合并行为。我的理解是,您有 ds1
和 ds2
具有重叠的时间索引,并且您想要 ds
是 ds1
和 ds2
的合并,并且它为重叠索引提供 max(ds1, ds2)
?
在这种情况下,你可以这样写:
ds = xr.concat([ds1, ds2], dim='new_dim').max(dim='new_dim')
我是否正确理解了你的问题?
关于如何在 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 点只有一个值。但是,它抛出了一个错误。关于如何完成这样的事情有什么想法或想法吗?
我确信我完全理解您想要的合并行为。我的理解是,您有 ds1
和 ds2
具有重叠的时间索引,并且您想要 ds
是 ds1
和 ds2
的合并,并且它为重叠索引提供 max(ds1, ds2)
?
在这种情况下,你可以这样写:
ds = xr.concat([ds1, ds2], dim='new_dim').max(dim='new_dim')
我是否正确理解了你的问题?