'Compute 1D derivative along a selected dimension in-place
May result to non-contiguous c array.'

def _derivative_inplace(self, nu, axis):

    if (nu < 0):
        return self._antiderivative_inplace((- nu), axis)
    ndim = len(self.x)
    axis = (axis % ndim)
    if (nu == 0):
        return
    else:
        sl = ([slice(None)] * ndim)
        sl[axis] = slice(None, (- nu), None)
        c2 = self.c[sl]
    if (c2.shape[axis] == 0):
        shp = list(c2.shape)
        shp[axis] = 1
        c2 = np.zeros(shp, dtype=c2.dtype)
    factor = spec.poch(np.arange(c2.shape[axis], 0, (-1)), nu)
    sl = ([None] * c2.ndim)
    sl[axis] = slice(None)
    c2 *= factor[sl]
    self.c = c2
