(
self,
obj: DataArray,
*,
window_dim: Hashable | Mapping[Any, Hashable] | None = None,
stride: int | Mapping[Any, int] = 1,
fill_value: Any = dtypes.NA,
keep_attrs: bool | None = None,
sliding_window_view_kwargs: Mapping[Any, Any] | None = None,
**window_dim_kwargs: Hashable,
)
| 423 | ) |
| 424 | |
| 425 | def _construct( |
| 426 | self, |
| 427 | obj: DataArray, |
| 428 | *, |
| 429 | window_dim: Hashable | Mapping[Any, Hashable] | None = None, |
| 430 | stride: int | Mapping[Any, int] = 1, |
| 431 | fill_value: Any = dtypes.NA, |
| 432 | keep_attrs: bool | None = None, |
| 433 | sliding_window_view_kwargs: Mapping[Any, Any] | None = None, |
| 434 | **window_dim_kwargs: Hashable, |
| 435 | ) -> DataArray: |
| 436 | from xarray.core.dataarray import DataArray |
| 437 | |
| 438 | if sliding_window_view_kwargs is None: |
| 439 | sliding_window_view_kwargs = {} |
| 440 | |
| 441 | keep_attrs = self._get_keep_attrs(keep_attrs) |
| 442 | |
| 443 | if window_dim is None: |
| 444 | if len(window_dim_kwargs) == 0: |
| 445 | raise ValueError( |
| 446 | "Either window_dim or window_dim_kwargs need to be specified." |
| 447 | ) |
| 448 | window_dim = {d: window_dim_kwargs[str(d)] for d in self.dim} |
| 449 | |
| 450 | window_dims = self._mapping_to_list( |
| 451 | window_dim, allow_default=False, allow_allsame=False |
| 452 | ) |
| 453 | strides = self._mapping_to_list(stride, default=1) |
| 454 | |
| 455 | window = obj.variable.rolling_window( |
| 456 | self.dim, |
| 457 | self.window, |
| 458 | window_dims, |
| 459 | center=self.center, |
| 460 | fill_value=fill_value, |
| 461 | **sliding_window_view_kwargs, |
| 462 | ) |
| 463 | |
| 464 | attrs = obj.attrs if keep_attrs else {} |
| 465 | |
| 466 | result = DataArray( |
| 467 | window, |
| 468 | dims=obj.dims + tuple(window_dims), |
| 469 | coords=obj.coords, |
| 470 | attrs=attrs, |
| 471 | name=obj.name, |
| 472 | ) |
| 473 | return result.isel( |
| 474 | {d: slice(None, None, s) for d, s in zip(self.dim, strides, strict=True)} |
| 475 | ) |
| 476 | |
| 477 | def reduce( |
| 478 | self, |
no test coverage detected