def pad_rem(pv, size=None):
    """ Removes linear padding from array

    This is a convenience function that does the opposite
    of `pad_add`.

    Parameters
    ----------
    pv : 1D or 2D ndarray
        The array from which the padding will be removed.
    size : tuple of length 1 (1D) or 2 (2D), optional
        The final size of the un-padded array. Defaults to half the size
        of the input array.


    Returns
    -------
    pv : 1D or 2D ndarray
        Padded array `av` with pads appended to right and bottom.
    """
    if size is None:
        size = list()
        for s in pv.shape:
            assert s % 2 == 0, 'Uneven size; specify correct size of output!'
            size.append(int(s / 2))
    elif not hasattr(size, '__len__'):
        size = [size]
    assert len(pv.shape) in [1, 2], 'Only 1D and 2D arrays!'
    assert len(pv.shape) == len(size
        ), '`size` must have same length as `av.shape`!'
    if len(pv.shape) == 2:
        return pv[:size[0], :size[1]]
    else:
        return pv[:size[0]]
