delgadom.
Мы можем реализовать (перемещение) биннинг для вашего примера, используя метод rolling
.Простым способом наложения на ось x является
In [14]: dsa.rolling(x=2).mean().isel(x=slice(1, None, 2))
Out[14]:
<xarray.Dataset>
Dimensions: (x: 2, y: 4)
Coordinates:
latitude (x, y) float64 9.0 61.0 58.0 57.0 23.0 38.0 10.0 75.0
longitude (x, y) float64 198.0 177.0 303.0 71.0 163.0 213.0 55.0 102.0
Dimensions without coordinates: x, y
Data variables:
CloudFraction (x, y) float64 0.2882 0.7061 0.9226 ... 0.5084 0.2377 0.6352
. На самом деле скользящее среднее вычисляется с размером окна 2, а затем выполняется выборка с шагом 2.
Поскольку операция mean
выполняетсялинейный, вы можете сделать то же самое для оси Y последовательно.
Вышеуказанная операция тратит немного вычислительных ресурсов, поскольку мы используем только половину вычисленных значений.Чтобы избежать этого, мы можем вместо этого использовать метод construct
,
In [18]: dsa.rolling(x=2).construct('tmp').isel(x=slice(1, None, 2)).mean('tmp')
...:
Out[18]:
<xarray.Dataset>
Dimensions: (x: 2, y: 4)
Coordinates:
latitude (x, y) float64 9.0 61.0 58.0 57.0 23.0 38.0 10.0 75.0
longitude (x, y) float64 198.0 177.0 303.0 71.0 163.0 213.0 55.0 102.0
Dimensions without coordinates: x, y
Data variables:
CloudFraction (x, y) float64 0.2882 0.7061 0.9226 ... 0.5084 0.2377 0.6352
Подробнее о методе прокатки см. На официальной странице http://xarray.pydata.org/en/stable/computation.html#rolling-window-operations
Лично я думаю, что это будетхорошо, если для xarray для этой цели есть метод bin
.Если вы не против внести свой вклад, давайте обсудим на странице проблемы Github.