Ein Bin ist ein Bereich, der die Breite eines einzelnen Balkens des Histogramms entlang der X-Achse darstellt. Sie können dies auch als Intervall bezeichnen. (Wikipedia definiert sie formeller als "disjunkte Kategorien".)
Die Numpy- histogram
Funktion zeichnet das Histogramm nicht, berechnet jedoch das Auftreten von Eingabedaten, die in die einzelnen Fächer fallen. Dies bestimmt wiederum den Bereich (nicht unbedingt die Höhe, wenn die Fächer nicht gleich breit sind) jedes Balkens.
In diesem Beispiel:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
Es gibt 3 Fächer für Werte im Bereich von 0 bis 1 (ohne 1), 1 bis 2 (ohne 2) bzw. 2 bis 3 (einschließlich 3). Die Art und Weise, wie Numpy diese Bins definiert, indem [0, 1, 2, 3]
in diesem Beispiel eine Liste von Trennzeichen ( ) angegeben wird, obwohl auch die Bins in den Ergebnissen zurückgegeben werden, da sie automatisch aus der Eingabe ausgewählt werden können, wenn keine angegeben sind. Wenn bins=5
zum Beispiel 5 Bins mit gleicher Breite verwendet werden, die zwischen dem minimalen Eingabewert und dem maximalen Eingabewert verteilt sind.
Die Eingabewerte sind 1, 2 und 1. Daher enthält Bin "1 bis 2" zwei Vorkommen (die beiden 1
Werte), und Bin "2 bis 3" enthält ein Vorkommen (das 2
). Diese Ergebnisse befinden sich im ersten Element des zurückgegebenen Tupels : array([0, 2, 1])
.
Da die Fächer hier gleich breit sind, können Sie die Anzahl der Vorkommen für die Höhe jedes Balkens verwenden. Wenn gezeichnet, hätten Sie:
- ein Balken der Höhe 0 für Bereich / Behälter [0,1] auf der X-Achse,
- ein Balken der Höhe 2 für Reichweite / Behälter [1,2],
- ein Balken der Höhe 1 für Reichweite / Behälter [2,3].
Sie können dies direkt mit Matplotlib zeichnen (seine hist
Funktion gibt auch die Bins und die Werte zurück):
>>> 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
Wert in den Maximalwert im Array.Unten wird
hist
angezeigt, dass sich 0 Elemente in Fach 0, 2 in Fach 1, 4 in Fach 3 und 1 in Fach 4 befinden.bin_edges
gibt an, dass Bin # 0 das Intervall [0,1) ist, Bin # 1 ist [1,2), ..., Bin # 3 ist [3,4).Spielen Sie mit dem obigen Code, ändern Sie die Eingabe in
np.histogram
und sehen Sie, wie es funktioniert.Aber ein Bild sagt mehr als tausend Worte:
quelle
plt.bar(bin_edges[:-1], hist, width=1)
undplt.xlim(min(bin_edges), max(bin_edges))
damit die Balken ihre erwartete Breite erreichen (andernfalls gibt es möglicherweise nur einen kleineren Behälter ohne dazwischen liegende Werte).Eine weitere nützliche Funktion
numpy.histogram
besteht darin, die Ausgabe als x- und y-Koordinate auf einem Liniendiagramm darzustellen. Beispielsweise:Dies kann eine nützliche Methode sein, um Histogramme zu visualisieren, bei denen Sie überall eine höhere Granularität ohne Balken wünschen. Sehr nützlich in Bildhistogrammen zur Identifizierung extremer Pixelwerte.
quelle