Funzione Python NumPy numpy.histogram()

Minahil Noor 30 gennaio 2023
  1. Sintassi di numpy.histogram()
  2. Codici di esempio: numpy.histogram()
  3. Codici di esempio: numpy.histogram() per specificare il numero e la dimensione dei contenitori
  4. Codici di esempio: numpy.histogram() per utilizzare il parametro densità
  5. Codici di esempio: numpy.histogram() per tracciare l’istogramma
Funzione Python NumPy numpy.histogram()

La funzione Python NumPy numpy.histogram() genera i valori di un istogramma. Non traccia un istogramma ma calcola i suoi valori. Passiamo un array come parametro. Questa funzione calcola il suo istogramma e restituisce un array che ha i valori dell’istogramma memorizzati. Possiamo dire che restituisce la rappresentazione numerica di un istogramma.

Sintassi di numpy.histogram()

numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None)

Parametri

a È una struttura array_like. Rappresenta i dati di input per calcolare l’istogramma.
bins È un numero intero, una stringa o una sequenza di scalari. Rappresenta il numero di bins. Un bin è come un intervallo, ad esempio 0-5, 6-10, ecc. Se bins è un numero intero, rappresenta il numero di bin equidistanti. Se è una stringa, rappresenta il metodo per calcolare lo spazio del contenitore. Se è una sequenza, rappresenta i contenitori con larghezze diverse.
range È l’intervallo dato in un numero in virgola mobile. Rappresenta la gamma superiore e inferiore dei bins. Se l’intervallo non è fornito, allora [a.min(), a.max()] è l’intervallo.
normed È un parametro booleano. La sua funzione è come il parametro densità ma se i contenitori non sono equidistanti genera risultati errati.
weights È una struttura array_like. La sua dimensione è la stessa di a. Se la density è True, i pesi sono normalizzati.
density È un parametro booleano. Se il suo valore è True, calcola la probabilità invece di calcolare la frequenza.

Ritorno

Restituisce due array: hist e bin_edges. L’array hist mostra i valori dell’istogramma e bin_edges mostra i bordi del bin. La dimensione di bin_edges è sempre 1 + (dimensione di hist) cioè length(hist)+1.

Codici di esempio: numpy.histogram()

Il parametro a è un parametro obbligatorio. Se eseguiamo questa funzione senza passare il numero di contenitori, calcolerà dieci contenitori con spazi disuguali.

import numpy as np

a = np.array(
    [89, 34, 56, 87, 90, 23, 45, 12, 65, 78, 9, 34, 12, 11, 2, 65, 78, 82, 28, 78]
)

histogram = np.histogram(a)
print(histogram)

Produzione:

(
    array([2, 3, 2, 2, 1, 0, 1, 2, 3, 4], dtype=int64),
    array([2.0, 10.8, 19.6, 28.4, 37.2, 46.0, 54.8, 63.6, 72.4, 81.2, 90.0]),
)

Codici di esempio: numpy.histogram() per specificare il numero e la dimensione dei contenitori

Specificheremo prima il numero di contenitori.

import numpy as np

a = np.array(
    [89, 34, 56, 87, 90, 23, 45, 12, 65, 78, 9, 34, 12, 11, 2, 65, 78, 82, 28, 78]
)

histogram = np.histogram(a, bins=2)
print(histogram)

Produzione:

(array([10, 10], dtype=int64), array([ 2., 46., 90.]))

Il codice precedente ha calcolato un istogramma con 2 contenitori. I contenitori sono [2., 46.) e [46., 90.).

Ora, specificheremo il bordo dei bidoni.

import numpy as np

a = np.array(
    [89, 34, 56, 87, 90, 23, 45, 12, 65, 78, 9, 34, 12, 11, 2, 65, 78, 82, 28, 78]
)

histogram = np.histogram(a, bins=[0, 30, 60, 90])
print(histogram)

Produzione:

(array([7, 4, 9]), array([0, 30, 60, 90]))

Codici di esempio: numpy.histogram() per utilizzare il parametro densità

import numpy as np

a = np.array(
    [89, 34, 56, 87, 90, 23, 45, 12, 65, 78, 9, 34, 12, 11, 2, 65, 78, 82, 28, 78]
)

histogram = np.histogram(a, bins=5, density=True)
print(histogram)

Produzione:

(array([ 0.01420455,  0.01136364,  0.00284091,  0.00852273,  0.01988636]), 
 array([  2. ,  19.6,  37.2,  54.8,  72.4,  90. ]))

Si noti che invece di calcolare i valori dell’istogramma, la funzione genera la probabilità.

Codici di esempio: numpy.histogram() per tracciare l’istogramma

Possiamo tracciare l’istogramma usando pyplot.

from matplotlib import pyplot as plt
import numpy as np

a = np.array(
    [89, 34, 56, 87, 90, 23, 45, 12, 65, 78, 9, 34, 12, 11, 2, 65, 78, 82, 28, 78]
)

plt.hist(a, bins=[0, 20, 40, 60, 80, 100])
plt.title("histogram")
plt.show()

Produzione:

istogramma insensibile