调用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
的窗口视图并time
DataArray。 例如,在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)
您可以将argmin
与rolling(...).reduce
一起使用,然后使用这些值从滚动窗口中选择日期。