docs: def _apply_units(data_data, data_units, fname):
      """
      Apply units to data.
  
      :param data_data: NumPy structured array with data from fname.
      :type data_data: :class:`numpy.ndarray`
      :param data_units: Units of fields in data_data.
      :type data_units: dict
      :param fname: Name of file from which data_data was read.
      :type fname: str
      :returns: Dictionary of data with units applied.
      :rtype: dict
      :raises: :exc:`~simkit.core.exceptions.UnnamedDataError`
      """
      data_names = data_data.dtype.names
      # raise error if NumPy data doesn't have names
      if not data_names:
          raise UnnamedDataError(fname)
      data = dict.fromkeys(data_names)  # dictionary of data read by NumPy
      # iterate over data read by NumPy
      for data_name in data_names:
          if data_name in data_units:
              # if units specified in parameters, then convert to string
              units = str(data_units[data_name])
              data[data_name] = data_data[data_name] * UREG(units)
          elif np.issubdtype(data_data[data_name].dtype, str):
              # if no units specified and is string
              data[data_name] = data_data[data_name].tolist()
          else:
              data[data_name] = data_data[data_name]
      return data