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?

Foi útil?

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
scroll top