code: def percentage_of_reoccurring_datapoints_to_all_datapoints(x):
      
      if len(x) == 0:
          return np.nan
  
      unique, counts = np.unique(x, return_counts=True)
  
      if counts.shape[0] == 0:
          return 0
  
      return np.sum(counts > 1) / float(counts.shape[0])
docs: Returns the percentage of unique values, that are present in the time series
      more than once.
  
          len(different values occurring more than once) / len(different values)
  
      This means the percentage is normalized to the number of unique values,
      in contrast to the percentage_of_reoccurring_values_to_all_values.
  
      :param x: the time series to calculate the feature of
      :type x: numpy.ndarray
      :return: the value of this feature
      :return type: float