code: def _discretize(a):
    
    arr = np.asarray(a)
    index = np.argsort(arr)
    inverse_index = np.zeros(arr.size, dtype=np.intp)
    inverse_index[index] = np.arange(arr.size, dtype=np.intp)
    arr = arr[index]
    obs = np.r_[True, arr[1:] != arr[:-1]]
    return obs.cumsum()[inverse_index] - 1
docs: Discretizes array values to class labels.