code: def reorient_vectors(bvecs, current_ornt, new_ornt, axis=0):
      """Change the orientation of gradients or other vectors.
  
      Moves vectors, storted along axis, from current_ornt to new_ornt. For
      example the vector [x, y, z] in "RAS" will be [-x, -y, z] in "LPS".
  
      R: Right
      A: Anterior
      S: Superior
      L: Left
      P: Posterior
      I: Inferior
  
      """
      if isinstance(current_ornt, str):
          current_ornt = orientation_from_string(current_ornt)
      if isinstance(new_ornt, str):
          new_ornt = orientation_from_string(new_ornt)
  
      n = bvecs.shape[axis]
      if current_ornt.shape != (n, 2) or new_ornt.shape != (n, 2):
          raise ValueError("orientations do not match")
  
      bvecs = np.asarray(bvecs)
      mapping = ornt_mapping(current_ornt, new_ornt)
      output = bvecs.take(mapping[:, 0], axis)
      out_view = np.rollaxis(output, axis, output.ndim)
      out_view *= mapping[:, 1]
      return output
  
imports: import logging
  from warnings import warn
  import numpy
  from scipy.linalg import inv, polar
  from dipy.io import gradients
  from dipy.core.onetime import auto_attr
  from dipy.core.geometry import vector_norm, vec2vec_rotmat
  from dipy.core.sphere import disperse_charges, HemiSphere
  from dipy.utils.deprecator import deprecate_with_version
label_desc: Use image node_id 20 for calling a global function with example usage: reorient_vectors(bvecs, current_ornt, new_ornt, axis) and returns: output