Quel est un bon moyen de placer des valeurs numériques dans une certaine plage? Par exemple, supposons que j'aie une liste de valeurs et que je veuille les classer dans N boîtes par leur portée. En ce moment, je fais quelque chose comme ceci:assigner des points aux cases
from scipy import *
num_bins = 3 # number of bins to use
values = # some array of integers...
min_val = min(values) - 1
max_val = max(values) + 1
my_bins = linspace(min_val, max_val, num_bins)
# assign point to my bins
for v in values:
best_bin = min_index(abs(my_bins - v))
où min_index renvoie l'indice de la valeur minimale. L'idée est que vous pouvez trouver la poubelle dans laquelle se trouve le point en voyant à quelle bin elle a la plus petite différence.
Mais je pense que cela a des cas bizarres. Ce que je cherche est une bonne représentation des bacs, idéalement ceux qui sont à moitié fermée à moitié ouverte (pour qu'il n'y ait aucun moyen d'attribuer un point à deux bacs), soit
bin1 = [x1, x2)
bin2 = [x2, x3)
bin3 = [x3, x4)
etc...
ce qui est une bonne façon de faire cela en Python, en utilisant numpy/scipy? Je ne m'intéresse ici qu'aux valeurs entières de binning.
merci beaucoup pour votre aide.
en note: Je suis plus que disposé à utiliser matplotlib en plus de scipy/numpy s'il a cette fonctionnalité. Je suppose que des fonctions comme 'hist' doivent faire quelque chose comme ça, sauf ici je ne cherche pas de complot. – user248237dfsf