code: def rot90(a, k=1, axes=(0, 1)):
      """Rotate an array by 90 degrees in the plane specified by axes.
  
      Note that ``axes`` argument has been introduced since NumPy v1.12.
      The contents of this document is the same as the original one.
  
      Args:
          a (~cupy.ndarray): Array of two or more dimensions.
          k (int): Number of times the array is rotated by 90 degrees.
          axes: (tuple of ints): The array is rotated in the plane defined by
              the axes. Axes must be different.
  
      Returns:
          ~cupy.ndarray: Output array.
  
      .. seealso:: :func:`numpy.rot90`
  
      """
      a_ndim = a.ndim
      if a_ndim < 2:
          raise ValueError("Input must be >= 2-d")
  
      axes = tuple(axes)
      if len(axes) != 2:
          raise ValueError("len(axes) must be 2")
      if axes[0] == axes[1] or abs(axes[0] - axes[1]) == a_ndim:
          raise ValueError("axes must be different")
      if not (
          -a_ndim <= axes[0] < a_ndim and -a_ndim <= axes[1] < a_ndim
      ):
          raise ValueError(
              "axes must be >= %d and < %d" % (-a_ndim, a_ndim)
          )
  
      k = k % 4
  
      if k == 0:
          return a[:]
      if k == 2:
          return _flip(a, axes)
  
      axes_t = list(range(0, a_ndim))
      axes_t[axes[0]], axes_t[axes[1]] = (
          axes_t[axes[1]],
          axes_t[axes[0]],
      )
  
      if k == 1:
          return cupy.transpose(_flip(a, (axes[1],)), axes_t)
      else:
          return _flip(cupy.transpose(a, axes_t), (axes[1],))
  
file_path: cupy/cupy/_manipulation/rearrange.py
imports: import itertools
  import numpy
  import cupy
  from cupy._core import internal
label_desc: Use image node_id 5 for calling a global function with example usage: rot90(a, k, axes) and returns: a, _flip, cupy, _flip