Wie kann ich ein vollständiges Histogramm mit numpy generieren?
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?
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