@classmethod
def new(cls, xk, c):
    """Make a new PwPoly with given knots and coefficients.

        Parameters
        ----------
        xk : ndarray, shape (K) or (K+1)
        c : ndarray, shape (N, ..., K+1)

        Returns
        -------
        p : PwPoly or a subclass
            The new PwPoly.

        Notes
        -----
        If ``xk.size`` is K+1, `xk` will not be copied.  If
        ``xk.size`` is K, ``xk[0]`` will be duplicated.  The
        coefficient array `c` is always used uncopied.  No error
        checking is done; this is a low level method for creating
        PwPoly results, not a user interface.
        """
    pwp = cls()
    cls._rawinit(pwp, xk, c)
    return pwp
