Is there a scientific method for grouping continuous numbers for this problem
Because you care about the ordering you can represent your points in two dimensions (where the x coordinate is just rescaled sequence number) and apply K-means.


import numpy as np

numbers = np.array([0.867, 0.808, 0.740, 0.746, 0.674, 
                    0.669, 0.648, 0.722, 0.781, 0.612, 
                    0.575, 0.566, 0.500, 0.555, 0.818, 
                    0.800, 0.500, 0.500, 0.666])

#you can experiment with other step sizes
step_size = (numbers.max() - numbers.min())/len(numbers)
numbers2d = np.array([(step_size * i,x) for (i,x) in enumerate(numbers - 0.8)])

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=6)
kmeans.fit(numbers2d) #random init - possibly different result each time

print(kmeans.labels_)

import matplotlib.pyplot as plt

for cluster in set(kmeans.labels_):
    x = np.where(kmeans.labels_==cluster)[0]
    y = numbers[x]
    x = numbers2d[:,0][x]
    plt.scatter(x,y)

plt.show()


Output:

[3 3 3 3 1 1 1 1 1 4 4 4 4 4 5 5 2 2 0]