Можно воспользоваться одним из
алгоритмов кластеризации в scikit-learn, например KMeans:
>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> notes = [145, 160, 112, 170, 281, 292, 258, 305, 257]
>>> notes = np.array(notes).reshape(-1, 1)
>>> KMeans(n_clusters=2).fit_predict(notes)
array([0, 0, 0, 0, 1, 1, 1, 1, 1], dtype=int32)
Но порядок присвоения номеров кластерам не гарантируется. Кластеризация просто позволяет выборку на N частей, присвоим каждому кластер произвольный порядковый номер. Может быть и так:
>>> KMeans(n_clusters=2).fit_predict(notes)
array([1, 1, 1, 1, 0, 0, 0, 0, 0], dtype=int32)