Bin to zakres reprezentujący szerokość pojedynczego słupka histogramu wzdłuż osi X. Możesz również nazwać to interwałem. (Wikipedia definiuje je bardziej formalnie jako „rozłączne kategorie”).
Funkcja Numpy histogram
nie rysuje histogramu, ale oblicza wystąpienia danych wejściowych, które mieszczą się w każdym przedziale, co z kolei określa obszar (niekoniecznie wysokość, jeśli przedziały nie mają równej szerokości) każdego słupka.
W tym przykładzie:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
Dostępne są 3 pojemniki na wartości z przedziału od 0 do 1 (z wyłączeniem 1.), 1 do 2 (z wyłączeniem 2) i 2 do 3 (w tym 3). Sposób, w jaki Numpy definiuje te pojemniki, jeśli podaje listę ograniczników ( [0, 1, 2, 3]
) w tym przykładzie, chociaż zwraca również pojemniki w wynikach, ponieważ może wybierać je automatycznie z danych wejściowych, jeśli żadne nie są określone. Jeśli bins=5
, na przykład, użyje 5 pojemników o równej szerokości między minimalną wartością wejściową a maksymalną wartością wejściową.
Wartości wejściowe to 1, 2 i 1. Dlatego przedział „1 do 2” zawiera dwa wystąpienia (dwie 1
wartości), a przedział „2 do 3” zawiera jedno wystąpienie ( 2
). Wyniki te są w pierwszej pozycji w zwracanej krotki: array([0, 2, 1])
.
Ponieważ pojemniki mają tutaj równą szerokość, możesz użyć liczby wystąpień dla wysokości każdego słupka. Po narysowaniu miałbyś:
- słupek o wysokości 0 dla zakresu / przedziału [0,1] na osi X,
- słupek o wysokości 2 dla zakresu / przedziału [1,2],
- słupek o wysokości 1 dla zakresu / przedziału [2,3].
Możesz to wykreślić bezpośrednio za pomocą Matplotlib (jego hist
funkcja zwraca również pojemniki i wartości):
>>> 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
wartość na maksymalną wartość w szyku.Poniżej
hist
wskazuje, że w skrzynce nr 0 znajduje się 0 towarów, w skrzynce nr 1 2, w skrzynce nr 3 4, w skrzynce nr 4 1.bin_edges
wskazuje, że przedział nr 0 to przedział [0,1), przedział nr 1 to [1,2), ..., przedział nr 3 to [3,4).Pobaw się powyższym kodem, zmień wejście na
np.histogram
i zobacz, jak to działa.Ale obraz jest wart tysiąca słów:
źródło
plt.bar(bin_edges[:-1], hist, width=1)
orazplt.xlim(min(bin_edges), max(bin_edges))
, aby słupki pasowały do ich oczekiwanej szerokości (w przeciwnym razie może istnieć po prostu mniejszy przedział bez wartości pomiędzy).Inną użyteczną rzeczą
numpy.histogram
jest wykreślenie wyniku jako współrzędnych x i y na linegrafie. Na przykład:Może to być przydatny sposób wizualizacji histogramów, w których chciałbyś uzyskać wyższy poziom szczegółowości bez pasków wszędzie. Bardzo przydatne w histogramach obrazów do identyfikacji skrajnych wartości pikseli.
źródło