2012-07-24 20 views
5

En mi script de Python tengo flotadores que quiero bin. En este momento estoy haciendo:Numpy: utilice contenedores con un rango infinito

min_val = 0.0 
max_val = 1.0 
num_bins = 20 
my_bins = numpy.linspace(min_val, max_val, num_bins) 
hist,my_bins = numpy.histogram(myValues, bins=my_bins) 

Pero ahora quiero añadir dos contenedores más para dar cuenta de valores que son < 0.0 y para aquellos que son> 1.0. Una bandeja debería incluir todos los valores en (-inf, 0), la otra en [1, inf)

¿Hay alguna forma directa de hacerlo mientras se usa la función numpy histogram?

Respuesta

7

La función numpy.histogram() acepta felizmente valores infinitos en el argumento bins:

numpy.histogram(my_values, bins=numpy.r_[-numpy.inf, my_bins, numpy.inf]) 

Alternativamente, se puede utilizar una combinación de numpy.searchsorted() y numpy.bincount(), aunque no veo mucha ventaja a ese enfoque.

3

Puede especificar numpy.inf como la parte superior y -numpy.inf como los límites de la bandeja inferior.