docs: def applyslicer(self, array, slicer, cval = None):
          r"""
          Apply a slicer returned by the iterator to a new array of the same
          dimensionality as the one used to initialize the iterator.
          
          Notes
          -----
          If ``array`` has more dimensions than ``slicer`` and ``pmask``, the first ones
          are sliced.
          
          Parameters
          ----------
          array : array_like
              A n-dimensional array.
          slicer : list
              List if `slice()` instances as returned by `next()`.
          cval : number
              Value to fill undefined positions. If None, the ``cval`` of the object is used.
              
          Returns
          -------
          patch: ndarray
              A patch from the input ``array``.
          """
          if cval is None:
              cval = self.cval
          _padding = self.padding + [(0, 0)] * (array.ndim - len(self.padding))
          array = numpy.pad(array, _padding, mode='constant', constant_values=cval)
          _psize = self.psize + list(array.shape[len(self.psize):])
          return array[slicer].reshape(_psize)