¿Por qué numpy.histogram (Python) omite un elemento en comparación con hist en Matlab?

Estoy tratando de convertir algo de código de Matlab a Python, y el código de Matlab parece:

[N,X] = hist(Isb*1e6, -3:0.01:0) 

donde Isb es una matriz 1D del elemento 2048000. N se emite como una matriz 1D de 301 elementos.

Mi código de Python se parece a:

 import numpy as np N,X = np.histogram(Isb*1e6,np.array(-3,0.01,0.01)) 

pero las salidas de N Python son una matriz 1D de 300 elementos donde el último elemento de Matlab N está apagado.

¿Hay una manera de replicar lo que Matlab hace con mayor precisión?

Necesito que N y X sean del mismo tamaño para poder hacer esto:

 loc = X < -0.75 I = N[loc].argmax() 

Tenga en cuenta que en el hist(x, vec) de matlab hist(x, vec) , vec diferencia los centros de bin , mientras que en matlab histc(x, vec) vec define los bordes de bin del histogtwig. El histogtwig de Numpy parece funcionar con los bordes de los contenedores . ¿Es esta diferencia importante para ti? Debería ser fácil convertir de uno a otro, y es posible que tenga que agregar una Inf adicional al final de los bordes del contenedor para que devuelva el contenedor adicional que desea. Más o menos así (sin probar):

 import numpy as np def my_hist(x, bin_centers): bin_edges = np.r_[-np.Inf, 0.5 * (bin_centers[:-1] + bin_centers[1:]), np.Inf] counts, edges = np.histogram(x, bin_edges) return counts 

Seguro que no cubre todos los casos de borde que proporciona el hist de hist , pero entiendes la idea.

Como se dijo anteriormente, en matlab -3: 0.01: 0 especifica los centros de contenedores, es decir, 301. Lo que hace en numpy especifica los bordes de los contenedores, por lo que este será un bin menos que en matlab.

Por lo tanto, puede mover de hist a histc dentro de matlab, o asegurarse de que aplica los mismos bordes de contenedor en números. En este caso especial (contenedores equidistantes) también podría usar numpy así:

 N,X = np.histogram(x, bins = n_bins, range = (xmin, xmax)) 

En este caso: n_bins de 301 y (xmin, xmax) que son (-3.005,0.005) deben ser equivalentes al historial de matlab.

Ver también:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html