code: def moveaxis(tensor, source, destination):
      
      try:
          source = np.core.numeric.normalize_axis_tuple(source, tensor.ndim)
      except IndexError:
          raise ValueError('Source should verify 0 <= source < tensor.ndim'
                           'Got %d' % source)
      try:
          destination = np.core.numeric.normalize_axis_tuple(destination, tensor.ndim)
      except IndexError:
          raise ValueError('Destination should verify 0 <= destination < tensor.ndim (%d).'
                           % tensor.ndim, 'Got %d' % destination)
  
      if len(source) != len(destination):
          raise ValueError('`source` and `destination` arguments must have '
                           'the same number of elements')
  
      order = [n for n in range(tensor.ndim) if n not in source]
  
      for dest, src in sorted(zip(destination, source)):
          order.insert(dest, src)
  
      return op.transpose(tensor, order)
docs: Moves the `source` axis into the `destination` position
      while leaving the other axes in their original order
  
      Parameters
      ----------
      tensor : mx.nd.array
          The array which axes should be reordered
      source : int or sequence of int
          Original position of the axes to move. Can be negative but must be unique.
      destination : int or sequence of int
          Destination position for each of the original axes. Can be negative but must be unique.
  
      Returns
      -------
      result : mx.nd.array
          Array with moved axes.
  
      Examples
      --------
      >>> X = mx.nd.array([[1, 2, 3], [4, 5, 6]])
      >>> mx.nd.moveaxis(X, 0, 1).shape
      (3L, 2L)
  
      >>> X = mx.nd.zeros((3, 4, 5))
      >>> mx.nd.moveaxis(X, [0, 1], [-1, -2]).shape
      (5, 4, 3)