code: def getCentroid(attribute_variants, comparator):
      
  
      n = len(attribute_variants)
  
      distance_matrix = numpy.zeros([n, n])
  
      # populate distance matrix by looping through elements of matrix triangle
      for i in range(0, n):
          for j in range(0, i):
              distance = comparator(attribute_variants[i], attribute_variants[j])
              distance_matrix[i, j] = distance_matrix[j, i] = distance
  
      average_distance = distance_matrix.mean(0)
  
      # there can be ties for minimum, average distance string
      min_dist_indices = numpy.where(
          average_distance == average_distance.min())[0]
  
      if len(min_dist_indices) > 1:
          centroid = breakCentroidTie(attribute_variants, min_dist_indices)
      else:
          centroid_index = min_dist_indices[0]
          centroid = attribute_variants[centroid_index]
  
      return centroid
docs: Takes in a list of attribute values for a field,
      evaluates the centroid using the comparator,
      & returns the centroid (i.e. the 'best' value for the field)