'Construct a new piecewise polynomial representing the derivative.
Parameters
nu : ndim-tuple of int
Order of derivatives to evaluate for each dimension.
If negative, the antiderivative is returned.
Returns
pp : NdPPoly
Piecewise polynomial of orders (k[0] - nu[0], ..., k[n] - nu[n])
representing the derivative of this polynomial.
Notes
Derivatives are evaluated piecewise for each polynomial
segment, even if the polynomial is not differentiable at the
breakpoints. The polynomial intervals in each dimension are
considered half-open, ``[a, b)``, except for the last interval
which is closed ``[a, b]``.'

def derivative(self, nu):

    p = self.construct_fast(self.c.copy(), self.x, self.extrapolate)
    for (axis, n) in enumerate(nu):
        p._derivative_inplace(n, axis)
    p._ensure_c_contiguous()
    return p
