code: def moveaxis(a, source, destination):
      """Moves axes of an array to new positions.
  
      Other axes remain in their original order.
  
      Args:
          a (cupy.ndarray): Array whose axes should be reordered.
          source (int or sequence of int):
              Original positions of the axes to move. These must be unique.
          destination (int or sequence of int):
              Destination positions for each of the original axes. These must
              also be unique.
  
      Returns:
          cupy.ndarray:
          Array with moved axes. This array is a view of the input array.
  
      .. seealso:: :func:`numpy.moveaxis`
  
      """
      # TODO(fukatani): check type
      # checking __len__ attribute is faster than cupy.isscalar or isinstance
      if not (
          hasattr(source, "__len__") or hasattr(destination, "__len__")
      ):
          return _routines_manipulation._move_single_axis(
              a, source, destination
          )
      return _core.moveaxis(a, source, destination)
  
imports: from cupy import _core
  from cupy._core import _routines_manipulation
label_desc: Use image node_id 3 for calling a global function with example usage: moveaxis(a, source, destination) and returns: _core, _routines_manipulation