code: def append(arr, values, axis=None):
      """
      Append values to the end of an array.
  
      Args:
          arr (array_like):
              Values are appended to a copy of this array.
          values (array_like):
              These values are appended to a copy of ``arr``.  It must be of the
              correct shape (the same shape as ``arr``, excluding ``axis``).  If
              ``axis`` is not specified, ``values`` can be any shape and will be
              flattened before use.
          axis (int or None):
              The axis along which ``values`` are appended.  If ``axis`` is not
              given, both ``arr`` and ``values`` are flattened before use.
  
      Returns:
          cupy.ndarray:
              A copy of ``arr`` with ``values`` appended to ``axis``.  Note that
              ``append`` does not occur in-place: a new array is allocated and
              filled.  If ``axis`` is None, ``out`` is a flattened array.
  
      .. seealso:: :func:`numpy.append`
      """
      # TODO(asi1024): Implement fast path for scalar inputs.
      arr = cupy.asarray(arr)
      values = cupy.asarray(values)
      if axis is None:
          return _core.concatenate_method(
              (arr.ravel(), values.ravel()), 0
          ).ravel()
      return _core.concatenate_method((arr, values), axis)
  
file_path: cupy/cupy/_manipulation/add_remove.py
imports: import numpy
  import cupy
  import math
  from cupy import _core
label_desc: Use image node_id 2 for calling a global function with example usage: append(arr, values, axis) and returns: _core, _core