Question

J'ai une très longue liste dans un numpy.array . Je veux générer un histogramme pour cela. Cependant, construit dans l'histogramme de Numpy nécessite un nombre prédéfini de bacs. Quel est le meilleur moyen de générer un histogramme complet avec un bac pour chaque valeur?

Était-ce utile?

La solution

Si vous avez un tableau d'entiers et que la valeur maximale n'est pas trop grande, vous pouvez utiliser numpy.bincount:

hist = dict((key,val) for key, val in enumerate(numpy.bincount(data)) if val)

Modifier: Si vous avez des données flottantes ou réparties sur une très grande plage, vous pouvez les convertir en nombres entiers en effectuant les actions suivantes:

bins = numpy.unique(data)
bincounts = numpy.bincount(numpy.digitize(data, bins) - 1)
hist = dict(zip(bins, bincounts))

Autres conseils

Un bin pour chaque valeur semble un peu étrange mais ne le ferait pas

bins=a.max()-a.min()

donne-t-il un résultat similaire?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top