Matplotlib: Wie konvertiere ich ein Histogramm in eine diskrete Wahrscheinlichkeitsmassenfunktion?

Ich habe eine Frage zur Funktion hist () mit matplotlib.

Ich schreibe einen Code, um ein Histogramm von Daten zu zeichnen, deren Wert von 0 bis 1 variiert. Zum Beispiel:

values = [0.21, 0.51, 0.41, 0.21, 0.81, 0.99]

bins = np.arange(0, 1.1, 0.1)
a, b, c = plt.hist(values, bins=bins, normed=0)
plt.show()

Der obige Code generiert ein korrektes Histogramm (ich konnte kein Bild posten, da ich nicht genug Reputation habe). In Bezug auf die Frequenzen sieht es so aus:

[0 0 2 0 1 1 0 0 1 1]

Ich möchte diese Ausgabe in eine diskrete Wahrscheinlichkeitsmassenfunktion umwandeln, d. H. Für das obige Beispiel möchte ich die folgenden Frequenzwerte erhalten:

[ 0.  0.  0.333333333  0.  0.166666667  0.166666667  0.  0.  0.166666667  0.166666667 ] # each item in the previous array divided by 6)

Ich dachte, ich muss nur den Parameter in der Funktion hist () auf 'normed = 1' ändern. Ich erhalte jedoch die folgenden Histogrammfrequenzen:

[ 0.  0.  3.33333333  0.  1.66666667  1.66666667  0.  0.  1.66666667  1.66666667 ]

Dies ist nicht das, was ich erwarte und ich weiß nicht, wie ich die diskrete Wahrscheinlichkeitsmassenfunktion erhalten kann, deren Summe 1,0 sein sollte. Eine ähnliche Frage wurde unter folgendem Link gestellt (Link zur Frage), aber ich glaube nicht, dass die Frage gelöst wurde.

Ich bedanke mich im Voraus für Ihre Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage