code: def _convert_numpy_types(a, **sympify_args):
      """
      Converts a numpy datatype input to an appropriate SymPy type.
      """
      import numpy as np
  
      if not isinstance(a, np.floating):
          if np.iscomplex(a):
              return _sympy_converter[complex](a.item())
          else:
              return sympify(a.item(), **sympify_args)
      else:
          from .numbers import Float
  
          prec = np.finfo(a).nmant + 1
          # E.g. double precision means prec=53 but nmant=52
          # Leading bit of mantissa is always 1, so is not stored
          a = str(list(np.reshape(np.asarray(a), (1, np.size(a)))[0]))[
              1:-1
          ]
          return Float(a, precision=prec)
  
file_path: sympy/sympy/core/sympify.py
imports: from __future__ import annotations
  from typing import Any, Callable
  from inspect import getmro
  import string
  from sympy.core.random import choice
  from .parameters import global_parameters
  from sympy.utilities.iterables import iterable
  from .basic import Basic
label_desc: Use image node_id 2 for calling a global function with example usage: _convert_numpy_types(a) and returns: Float, _sympy_converter, sympify