Frage

Ich habe eine sehr lange Liste in einem numpy.array. Ich möchte für sie ein Histogramm erzeugen. Allerdings Numpy in Histogramm gebaut erfordert eine vordefinierte Anzahl von Bins. Was ist der beste Weg, um ein vollständiges Histogramm mit einem Behälter für jeden Wert zu generieren?

War es hilfreich?

Lösung

Wenn Sie ein Array von ganzen Zahlen und der Maximalwert ist nicht zu groß Sie können numpy.bincount verwenden:

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

Edit: Wenn Sie Float-Daten oder Daten, verteilt über eine große Reichweite haben, können Sie es auf ganze Zahlen umwandeln, indem Sie:

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

Andere Tipps

Ein ist für jeden Wert klingt ein wenig seltsam, aber würde nicht

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

gibt ein ähnliches Ergebnis?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top