Qu'est-ce que vous essayez de faire, selon le contexte, peut-être:
Binning
C'est de regrouper vos éléments dans des bacs/seaux, soit de discrets taille égale ou prédéfinie. Cela fait facilement à l'aide des bibliothèques comme Pandas:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html
>>> pandas.cut([123, 127, 99, 75, 86, 83, 81], 4, labels=False)
array([3, 3, 1, 0, 0, 0, 0])
(qui se lit "123 et 127 sont dans le groupe 3, 99 est en groupe un, et 75, 86, 83, 81 dans le groupe 0").
Clustering
C'est de regrouper vos éléments en grappes, quand vous ne connaissez pas les valeurs, mais ils savent qu'ils forment des groupes.
Comme "1, 2, 3, 11, 12, 13" est clairement deux groupes "1, 2, 3" et "11, 12, 13".
Une façon agréable et facile de regrouper des données est K-means mais il y a d'autres algorithmes, vous devriez jeter un oeil à scipy.
>>> import sklearn.cluster
>>> import numpy as np
>>>
>>> kmeans = sklearn.cluster.KMeans(n_clusters=4)
>>> kmeans.fit_predict(numpy.array([123, 127, 99, 75, 86, 83, 81]).reshape(-1, 1))
array([0, 0, 2, 3, 1, 1, 1], dtype=int32)
Celui-ci a donné 123 et 127 ensemble, 99 seul, 75 seul, 81 83 86 ensemble.
Groupement
C'est un simple "GROUP BY" ala SQL, lorsque vous pouvez fournir une fonction qui renvoie le groupe où votre valeur doit être:
comme:
>>> from itertools import groupby
>>> for key, group in groupby([123, 127, 99, 75, 86, 83, 81], lambda x: int(x/10)):
... print(key, list(group))
...
12 [123, 127]
9 [99]
7 [75]
8 [86, 83, 81]
Quelque chose comme ceci: 'def func (l): return Counter (carte (lambda x: str (x/10) + 'x', l)) '? – Marii