¿Cómo puedo generar un histograma completo con numpy?
Pregunta
Tengo una lista muy larga en un numpy.array
. Quiero generar un histograma para ello. Sin embargo, Numpy integrado en el histograma requiere un número predefinido de contenedores. ¿Cuál es la mejor manera de generar un histograma completo con un contenedor para cada valor?
Solución
Si tiene una matriz de enteros y el valor máximo no es demasiado grande, puede usar numpy.bincount:
hist = dict((key,val) for key, val in enumerate(numpy.bincount(data)) if val)
Editar: Si tiene datos flotantes, o datos distribuidos en un amplio rango, puede convertirlos a enteros haciendo:
bins = numpy.unique(data)
bincounts = numpy.bincount(numpy.digitize(data, bins) - 1)
hist = dict(zip(bins, bincounts))
Otros consejos
Un contenedor para cada valor suena un poco extraño pero no
bins=a.max()-a.min()
¿da un resultado similar?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow