获取 xarray 滚动最小值或最大值的日期



调用foo.rolling(time=100).mean()将给出 100 天的滚动周期的平均值。 我想找到这 100 天内的最小值和最大值。轻松使用foo.rolling(time=100).min()

但是,我如何找到此最小值和最大值的确切日期?我想知道在这个滚动的 100 天窗口中,最小和最大周期的日期是什么。还是我需要编写自己的函数来执行此操作?

num=4000
data = np.random.rand(num, 3)
locs = ['one', 'two', 'three']
times = pd.date_range('2000-01-01', periods=num)
foo = xr.DataArray(data, coords=[times, locs], dims=['time', 'space'])
foo.rolling(time=100).max()
foo.rolling(time=100).min()

谢谢

执行此操作的一种方法是使用DataArrayRolling.construct显式创建foo的窗口视图并timeDataArray。 例如,在argmin的情况下:

windowed_foo = foo.rolling(time=100).construct("window_dim")
windowed_times = foo.time.rolling(time=100).construct("window_dim")
indexes = windowed_foo.argmin("window_dim")
result = windowed_times.isel(window_dim=indexes)

您可以将argminrolling(...).reduce一起使用,然后使用这些值从滚动窗口中选择日期。

最新更新