code: def trapz(y, x=None, dx=1.0, axis=-1):
      """
      Integrate along the given axis using the composite trapezoidal rule.
  
      Integrate `y` (`x`) along given axis.
  
      Parameters
      ----------
      y : array_like
          Input tensor to integrate.
      x : array_like, optional
          The sample points corresponding to the `y` values. If `x` is None,
          the sample points are assumed to be evenly spaced `dx` apart. The
          default is None.
      dx : scalar, optional
          The spacing between sample points when `x` is None. The default is 1.
      axis : int, optional
          The axis along which to integrate.
  
      Returns
      -------
      trapz : float
          Definite integral as approximated by trapezoidal rule.
  
      See Also
      --------
      sum, cumsum
  
      Notes
      -----
      Image [2]_ illustrates trapezoidal rule -- y-axis locations of points
      will be taken from `y` tensor, by default x-axis distances between
      points will be 1.0, alternatively they can be provided with `x` tensor
      or with `dx` scalar.  Return value will be equal to combined area under
      the red lines.
  
  
      References
      ----------
      .. [1] Wikipedia page: https://en.wikipedia.org/wiki/Trapezoidal_rule
  
      .. [2] Illustration image:
             https://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png
  
      Examples
      --------
      >>> import mars.tensor as mt
      >>> mt.trapz([1,2,3]).execute()
      4.0
      >>> mt.trapz([1,2,3], x=[4,6,8]).execute()
      8.0
      >>> mt.trapz([1,2,3], dx=2).execute()
      8.0
      >>> a = mt.arange(6).reshape(2, 3)
      >>> a.execute()
      array([[0, 1, 2],
             [3, 4, 5]])
      >>> mt.trapz(a, axis=0).execute()
      array([1.5, 2.5, 3.5])
      >>> mt.trapz(a, axis=1).execute()
      array([2.,  8.])
  
      """
      y = astensor(y)
      axis = validate_axis(y.ndim, axis)
      op = TensorTrapz(y=y, x=x, dx=dx, axis=axis)
      return op(y, x=x)
  
imports: import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import KeyField, Float64Field, Int8Field
  from ...utils import has_unknown_shape
  from ..array_utils import as_same_device, device
  from ..core import TensorOrder
  from ..datasource import tensor
  from ..operands import TensorOperand, TensorOperandMixin
  from ..utils import validate_axis
label_desc: Use image node_id 1 for calling a global function with example usage: trapz(y, x, dx, axis) and returns: op