Como posso gerar um histograma completo com numpy?
Pergunta
Eu tenho uma lista muito longa em um numpy.array
. Eu quero gerar um histograma para ele. No entanto, Numpy é construído em histograma requer um número pré-definido de compartimentos. Qual é a melhor maneira de gerar um histograma completo com um bin para cada valor?
Solução
Se você tem um array de inteiros e o valor máximo não é muito grande, você pode usar numpy.bincount:
hist = dict((key,val) for key, val in enumerate(numpy.bincount(data)) if val)
Edit: Se você tiver dados float, ou disseminação de dados através de uma enorme gama você pode convertê-lo em números inteiros fazendo:
bins = numpy.unique(data)
bincounts = numpy.bincount(numpy.digitize(data, bins) - 1)
hist = dict(zip(bins, bincounts))
Outras dicas
A bin para cada valor soa um pouco estranho, mas não o faria
bins=a.max()-a.min()
dar um resultado semelhante?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow