def __init__(self, x, y, axis=0): x = np.asarray(x) y = np.asarray(y) axis = axis % y.ndim xp = x.reshape((x.shape[0],) + (1,)*(y.ndim-1)) yp = np.rollaxis(y, axis) data = np.empty((yp.shape[0], 2) + yp.shape[1:], y.dtype) data[:,0] = yp data[:,1] = self._get_derivatives(xp, yp) s = list(range(2, y.ndim + 1)) s.insert(axis, 1) s.insert(axis, 0) data = data.transpose(s) PiecewisePolynomial.__init__(self, x, data, orders=3, direction=None, axis=axis)