code: def max(self, values, axis=0):
          
          values = np.asarray(values)
          return self.unique, self.reduce(values, np.maximum, axis)
docs: return the maximum within each group
  
          Parameters
          ----------
          values : array_like, [keys, ...]
              values to take maximum of per group
          axis : int, optional
              alternative reduction axis for values
  
          Returns
          -------
          unique: ndarray, [groups]
              unique keys
          reduced : ndarray, [groups, ...]
              value array, reduced over groups