code: def unique_array(arr):
      
      if not len(arr):
          return np.asarray(arr)
      elif pd:
          if isinstance(arr, np.ndarray) and arr.dtype.kind not in 'MO':
              # Avoid expensive unpacking if not potentially datetime
              return pd.unique(arr)
  
          values = []
          for v in arr:
              if (isinstance(v, datetime_types) and
                  not isinstance(v, cftime_types)):
                  v = pd.Timestamp(v).to_datetime64()
              values.append(v)
          return pd.unique(values)
      else:
          arr = np.asarray(arr)
          _, uniq_inds = np.unique(arr, return_index=True)
          return arr[np.sort(uniq_inds)]
docs: Returns an array of unique values in the input order.
  
      Args:
         arr (np.ndarray or list): The array to compute unique values on
  
      Returns:
         A new array of unique values