code: def parse_number_list(x, dtype=None):
      
  
      # Always convert to float and then perform truncation to integer if necessary
      number_list = np.array([float(x) for x in x.split()])
  
      if dtype is None:
          number_list_trunc = number_list.astype(int)
  
          # If there is no difference between the truncated number list and the number list, then that means that the
          # number list was all integers and we can just return that
          if np.all((number_list - number_list_trunc) == 0):
              number_list = number_list_trunc
      elif dtype == int:
          number_list = number_list.astype(int)
      elif dtype != float:
          raise NRRDError('dtype should be None for automatic type detection, float or int')
  
      return number_list
docs: Parse NRRD number list from string into (N,) :class:`numpy.ndarray`.
  
      See :ref:`user-guide:int list` and :ref:`user-guide:double list` for more information on the format.
  
      Parameters
      ----------
      x : :class:`str`
          String containing NRRD number list
      dtype : data-type, optional
          Datatype to use for the resulting Numpy array. Datatype can be :class:`float`, :class:`int` or :obj:`None`. If
          :obj:`dtype` is :obj:`None`, then it will be automatically determined by checking for fractional numbers. If
          found, then the string will be converted to :class:`float`, otherwise :class:`int`. Default is to automatically
          determine datatype.
  
      Returns
      -------
      vector : (N,) :class:`numpy.ndarray`
          Vector that is parsed from the :obj:`x` string