Coarsen object.

        Parameters
        ----------
        dim: dict, optional
            Mapping from the dimension name to the window size.
            dim : str
                Name of the dimension to create the rolling iterator
                along (e.g., `time`).
            window : int
                Size of the moving window.
        boundary : 'exact' | 'trim' | 'pad'
            If 'exact', a ValueError will be raised if dimension size is not a
            multiple of the window size. If 'trim', the excess entries are
            dropped. If 'pad', NA will be padded.
        side : 'left' or 'right' or mapping from dimension to 'left' or 'right'
        coord_func: function (name) that is applied to the coordintes,
            or a mapping from coordinate name to function (name).

        Returns
        -------
        Coarsen object (core.rolling.DataArrayCoarsen for DataArray,
        core.rolling.DatasetCoarsen for Dataset.)

        Examples
        --------
        Coarsen the long time series by averaging over every four days.

        >>> da = xr.DataArray(np.linspace(0, 364, num=364),
        ...                   dims='time',
        ...                   coords={'time': pd.date_range(
        ...                       '15/12/1999', periods=364)})
        >>> da
        <xarray.DataArray (time: 364)>
        array([  0.      ,   1.002755,   2.00551 , ..., 361.99449 , 362.997245,
               364.      ])
        Coordinates:
          * time     (time) datetime64[ns] 1999-12-15 1999-12-16 ... 2000-12-12
        >>>
        >>> da.coarsen(time=3, boundary='trim').mean()
        <xarray.DataArray (time: 121)>
        array([  1.002755,   4.011019,   7.019284,  ...,  358.986226,
               361.99449 ])
        Coordinates:
          * time     (time) datetime64[ns] 1999-12-16 1999-12-19 ... 2000-12-10
        >>>

        See Also
        --------
        core.rolling.DataArrayCoarsen
        core.rolling.DatasetCoarsen

def coarsen(self, dim: Optional[Mapping[Hashable, int]] = None,
                boundary: str = 'exact',
                side: Union[str, Mapping[Hashable, str]] = 'left',
                coord_func: str = 'mean',
                **dim_kwargs: int):
        """
        Coarsen object.

        Parameters
        ----------
        dim: dict, optional
            Mapping from the dimension name to the window size.
            dim : str
                Name of the dimension to create the rolling iterator
                along (e.g., `time`).
            window : int
                Size of the moving window.
        boundary : 'exact' | 'trim' | 'pad'
            If 'exact', a ValueError will be raised if dimension size is not a
            multiple of the window size. If 'trim', the excess entries are
            dropped. If 'pad', NA will be padded.
        side : 'left' or 'right' or mapping from dimension to 'left' or 'right'
        coord_func: function (name) that is applied to the coordintes,
            or a mapping from coordinate name to function (name).

        Returns
        -------
        Coarsen object (core.rolling.DataArrayCoarsen for DataArray,
        core.rolling.DatasetCoarsen for Dataset.)

        Examples
        --------
        Coarsen the long time series by averaging over every four days.

        >>> da = xr.DataArray(np.linspace(0, 364, num=364),
        ...                   dims='time',
        ...                   coords={'time': pd.date_range(
        ...                       '15/12/1999', periods=364)})
        >>> da
        <xarray.DataArray (time: 364)>
        array([  0.      ,   1.002755,   2.00551 , ..., 361.99449 , 362.997245,
               364.      ])
        Coordinates:
          * time     (time) datetime64[ns] 1999-12-15 1999-12-16 ... 2000-12-12
        >>>
        >>> da.coarsen(time=3, boundary='trim').mean()
        <xarray.DataArray (time: 121)>
        array([  1.002755,   4.011019,   7.019284,  ...,  358.986226,
               361.99449 ])
        Coordinates:
          * time     (time) datetime64[ns] 1999-12-16 1999-12-19 ... 2000-12-10
        >>>

        See Also
        --------
        core.rolling.DataArrayCoarsen
        core.rolling.DatasetCoarsen
        """
        dim = either_dict_or_kwargs(dim, dim_kwargs, 'coarsen')
        return self._coarsen_cls(
            self, dim, boundary=boundary, side=side,
            coord_func=coord_func)