Un bac est une plage qui représente la largeur d'une seule barre de l'histogramme le long de l'axe X. Vous pouvez également appeler cela l'intervalle. (Wikipedia les définit plus formellement comme des «catégories disjointes».)
La histogram
fonction Numpy ne dessine pas l'histogramme, mais elle calcule les occurrences de données d'entrée qui entrent dans chaque bac, qui à son tour détermine la zone (pas nécessairement la hauteur si les bacs ne sont pas de largeur égale) de chaque barre.
Dans cet exemple:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
Il y a 3 casiers, pour des valeurs allant de 0 à 1 (sauf 1.), 1 à 2 (excl. 2) et 2 à 3 (incl. 3), respectivement. La façon dont Numpy définit ces bins est en donnant une liste de délimiteurs ( [0, 1, 2, 3]
) dans cet exemple, bien qu'il renvoie également les bins dans les résultats, car il peut les choisir automatiquement à partir de l'entrée, si aucun n'est spécifié. Si bins=5
, par exemple, il utilisera 5 bacs de largeur égale répartis entre la valeur d'entrée minimale et la valeur d'entrée maximale.
Les valeurs d'entrée sont 1, 2 et 1. Par conséquent, le bac "1 à 2" contient deux occurrences (les deux 1
valeurs) et le bac "2 à 3" contient une occurrence (le 2
). Ces résultats sont dans le premier élément du tuple retourné: array([0, 2, 1])
.
Puisque les cases ici sont de largeur égale, vous pouvez utiliser le nombre d'occurrences pour la hauteur de chaque barre. Une fois dessiné, vous auriez:
- une barre de hauteur 0 pour range / bin [0,1] sur l'axe X,
- une barre de hauteur 2 pour range / bin [1,2],
- une barre de hauteur 1 pour range / bin [2,3].
Vous pouvez tracer cela directement avec Matplotlib (sa hist
fonction retourne également les bins et les valeurs):
>>> import matplotlib.pyplot as plt
>>> plt.hist([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]), <a list of 3 Patch objects>)
>>> plt.show()
bins
valeur créée manuellement par la valeur maximale du tableau.Ci-dessous,
hist
indique qu'il y a 0 articles dans le bac n ° 0, 2 dans le bac n ° 1, 4 dans le bac n ° 3, 1 dans le bac n ° 4.bin_edges
indique que la case n ° 0 est l'intervalle [0,1), la case n ° 1 est [1,2), ..., la case n ° 3 est [3,4).Jouez avec le code ci-dessus, changez l'entrée
np.histogram
et voyez comment cela fonctionne.Mais une image vaut mille mots:
la source
plt.bar(bin_edges[:-1], hist, width=1)
etplt.xlim(min(bin_edges), max(bin_edges))
, pour que les barres correspondent à leur largeur attendue (sinon, il se peut qu'il y ait juste un bac plus petit sans valeurs entre les deux).Une autre chose utile à faire
numpy.histogram
est de tracer la sortie sous forme de coordonnées x et y sur un graphique linéaire. Par exemple:Cela peut être un moyen utile de visualiser des histogrammes où vous souhaitez un niveau de granularité plus élevé sans barres partout. Très utile dans les histogrammes d'image pour identifier les valeurs de pixels extrêmes.
la source