Python NumPy numpy.histogram() Función

Minahil Noor 30 enero 2023
  1. Sintaxis de numpy.histograma()
  2. Códigos de ejemplo: numpy.histogram()
  3. Códigos de ejemplo: numpy.histogram() para especificar el número y el tamaño de los bins
  4. Códigos de ejemplo: numpy.histogram() para usar el parámetro de density
  5. Códigos de ejemplo: numpy.histogram() para trazar el histograma
Python NumPy numpy.histogram() Función

La función Python NumPy numpy.histogram() genera los valores de un histograma. No traza un histograma pero calcula sus valores. Pasamos un array como parámetro. Esta función calcula su histograma y devuelve un array que ha almacenado los valores del histograma. Podemos decir que devuelve la representación numérica de un histograma.

Sintaxis de numpy.histograma()

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

Parámetros

a Es una estructura tipo “matriz”. Representa los datos de entrada para calcular el histograma.
bins Es un entero, una cuerda o una secuencia de escalares. Representa el número de bin. Un bin es como un rango, por ejemplo, 0-5, 6-10, etc. Si bins es un número entero, entonces representa el número de bins igualmente espaciados. Si es una cadena, entonces representa el método para calcular el espacio de los bins. Si es una secuencia entonces representa los bins con diferentes anchos.
range Es el rango dado en un número de punto flotante. Representa el rango superior e inferior de las “cajas”. Si no se da el rango, entonces [a.min(), a.max()] es el rango.
normed Es un parámetro booleano. Su función es como el parámetro density pero si los contenedores no están espaciados por igual genera resultados incorrectos.
weights Es una estructura de tipo array_like. Su tamaño es el mismo que el de a. Si la density es True, entonces los pesos se normalizan.
density Es un parámetro booleano. Si su valor es True, entonces calcula la probabilidad en lugar de calcular la frecuencia.

Retorna

Devuelve dos matrices: hist y bin_edges. La matriz hist muestra los valores del histograma y bin_edges muestra los bordes de la caja. El tamaño de bin_edges es siempre 1 + (tamaño de hist), es decir, length(hist) +1.

Códigos de ejemplo: numpy.histogram()

El parámetro a es un parámetro obligatorio. Si ejecutamos esta función sin pasar el número de bines, entonces calculará diez bines con espacios desiguales.

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)

Producción:

(
    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]),
)

Códigos de ejemplo: numpy.histogram() para especificar el número y el tamaño de los bins

Primero especificaremos el número de contenedores.

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)

Producción:

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

El código anterior ha calculado un histograma que tiene 2 contenedores. Los bins son [2., 46.) y [46., 90.).

Ahora, especificaremos el borde de los bins.

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)

Producción:

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

Códigos de ejemplo: numpy.histogram() para usar el parámetro de density

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)

Producción:

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

Obsérvese que en lugar de computar los valores del histograma, la función genera la probabilidad.

Códigos de ejemplo: numpy.histogram() para trazar el histograma

Podemos trazar el histograma 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()

Producción:

Histograma numérico