class_docstr: Piecewise-cubic interpolator matching values and first derivatives.
  
  The result is represented as a `PPoly` instance.
  
  Parameters
  ----------
  x : array_like, shape (n,)
      1-D array containing values of the independent variable.
      Values must be real, finite and in strictly increasing order.
  y : array_like
      Array containing values of the dependent variable. It can have
      arbitrary number of dimensions, but the length along ``axis``
      (see below) must match the length of ``x``. Values must be finite.
  dydx : array_like
      Array containing derivatives of the dependent variable. It can have
      arbitrary number of dimensions, but the length along ``axis``
      (see below) must match the length of ``x``. Values must be finite.
  axis : int, optional
      Axis along which `y` is assumed to be varying. Meaning that for
      ``x[i]`` the corresponding values are ``np.take(y, i, axis=axis)``.
      Default is 0.
  extrapolate : {bool, 'periodic', None}, optional
      If bool, determines whether to extrapolate to out-of-bounds points
      based on first and last intervals, or to return NaNs. If 'periodic',
      periodic extrapolation is used. If None (default), it is set to True.
  
  Attributes
  ----------
  x : ndarray, shape (n,)
      Breakpoints. The same ``x`` which was passed to the constructor.
  c : ndarray, shape (4, n-1, ...)
      Coefficients of the polynomials on each segment. The trailing
      dimensions match the dimensions of `y`, excluding ``axis``.
      For example, if `y` is 1-D, then ``c[k, i]`` is a coefficient for
      ``(x-x[i])**(3-k)`` on the segment between ``x[i]`` and ``x[i+1]``.
  axis : int
      Interpolation axis. The same axis which was passed to the
      constructor.
  
  Methods
  -------
  __call__
  derivative
  antiderivative
  integrate
  roots
  
  See Also
  --------
  Akima1DInterpolator : Akima 1D interpolator.
  PchipInterpolator : PCHIP 1-D monotonic cubic interpolator.
  CubicSpline : Cubic spline data interpolator.
  PPoly : Piecewise polynomial in terms of coefficients and breakpoints
  
  Notes
  -----
  If you want to create a higher-order spline matching higher-order
  derivatives, use `BPoly.from_derivatives`.
  
  References
  ----------
  .. [1] `Cubic Hermite spline
          <https://en.wikipedia.org/wiki/Cubic_Hermite_spline>`_
          on Wikipedia.
class_docstr_tok: ["Piecewise-cubic","interpolator","matching","values","and","first","derivatives",".","The","result","is","represented","as","a","`","PPoly","`","instance",".","Parameters","--","--","--","--","--","x",":","array_like",",","shape","(","n",",",")","1-D","array","containing","values","of","the","independent","variable",".","Values","must","be","real",",","finite","and","in","strictly","increasing","order",".","y",":","array_like","Array","containing","values","of","the","dependent","variable",".","It","can","have","arbitrary","number","of","dimensions",",","but","the","length","along","``","axis","``","(","see","below",")","must","match","the","length","of","``","x","``",".","Values","must","be","finite",".","dydx",":","array_like","Array","containing","derivatives","of","the","dependent","variable",".","It","can","have","arbitrary","number","of","dimensions",",","but","the","length","along","``","axis","``","(","see","below",")","must","match","the","length","of","``","x","``",".","Values","must","be","finite",".","axis",":","int",",","optional","Axis","along","which","`","y","`","is","assumed","to","be","varying",".","Meaning","that","for","``","x","[","i","]","``","the","corresponding","values","are","``","np.take","(","y",",","i",",","axis=axis",")","``",".","Default","is","0.","extrapolate",":","{","bool",",","'periodic","'",",","None","}",",","optional","If","bool",",","determines","whether","to","extrapolate","to","out-of-bounds","points","based","on","first","and","last","intervals",",","or","to","return","NaNs",".","If","'periodic","'",",","periodic","extrapolation","is","used",".","If","None","(","default",")",",","it","is","set","to","True",".","Attributes","--","--","--","--","--","x",":","ndarray",",","shape","(","n",",",")","Breakpoints",".","The","same","``","x","``","which","was","passed","to","the","constructor",".","c",":","ndarray",",","shape","(","4",",","n-1",",","...",")","Coefficients","of","the","polynomials","on","each","segment",".","The","trailing","dimensions","match","the","dimensions","of","`","y","`",",","excluding","``","axis","``",".","For","example",",","if","`","y","`","is","1-D",",","then","``","c","[","k",",","i","]","``","is","a","coefficient","for","``","(","x-x","[","i","]",")","*","*","(","3-k",")","``","on","the","segment","between","``","x","[","i","]","``","and","``","x","[","i+1","]","``",".","axis",":","int","Interpolation","axis",".","The","same","axis","which","was","passed","to","the","constructor",".","Methods","--","--","--","-","__call__","derivative","antiderivative","integrate","roots","See","Also","--","--","--","--","Akima1DInterpolator",":","Akima","1D","interpolator",".","PchipInterpolator",":","PCHIP","1-D","monotonic","cubic","interpolator",".","CubicSpline",":","Cubic","spline","data","interpolator",".","PPoly",":","Piecewise","polynomial","in","terms","of","coefficients","and","breakpoints","Notes","--","--","-","If","you","want","to","create","a","higher-order","spline","matching","higher-order","derivatives",",","use","`","BPoly.from_derivatives","`",".","References","--","--","--","--","--","..","[","1","]","`","Cubic","Hermite","spline","<","https",":","\/\/en.wikipedia.org\/wiki\/Cubic_Hermite_spline",">","`","_","on","Wikipedia","."]
code: def __init__(self, x, y, dydx, axis=0, extrapolate=None):
      if extrapolate is None:
          extrapolate = True
  
      x, dx, y, axis, dydx = prepare_input(x, y, axis, dydx)
  
      dxr = dx.reshape([dx.shape[0]] + [1] * (y.ndim - 1))
      slope = np.diff(y, axis=0) / dxr
      t = (dydx[:-1] + dydx[1:] - 2 * slope) / dxr
  
      c = np.empty((4, len(x) - 1) + y.shape[1:], dtype=t.dtype)
      c[0] = t / dxr
      c[1] = (slope - dydx[:-1]) / dxr - t
      c[2] = dydx[:-1]
      c[3] = y[:-1]
  
      super().__init__(c, x, extrapolate=extrapolate)
      self.axis = axis
  
imports: import numpy
  from .None import PPoly
  from .polyint import _isscalar
  from scipy.linalg import solve_banded, solve
label_desc: Use image node_id 1 to create a new CubicHermiteSpline object from inherited base classes: PPoly with example: obj = CubicHermiteSpline(x, y, dydx, axis, extrapolate)