Seite 1 von 1

Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 09:24
von Natrix natrix
Hallo allerseits,

habe eine Frage, die für die Profis sicher eine Kleinigkeit ist, die ich aber gerade nicht lösen kann:

Ich habe eine Liste von Zahlen (int/float), insg. z.B. 500 Werte von 0 bis 100. Für diese Liste möchte ich eine Gaussche Summenkurve darstellen, die zeigt wie viele Werte zwishcen 0 und 1, zwischen 0 und 2, zwischen 0 und 3... liegen.

So in etwa wie ein Histogramm, bei dem die Werte von links nach rechts aufaddiert werden.

Vielen Dank für Vorschläge!

Re: Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 09:57
von Sirius3
@Natrix natrix: was für Gedanken hast Du Dir denn dazu schon gemacht? Kennst Du for-Schleifen und if-Abfragen? Mehr Wissen ist nicht nötig, um die Aufgabe zu lösen.

Re: Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 14:24
von MagBen
Ich würde da zunächst das Histogram mit numpy.histogram berechnen
und danach in einer Schleife über das Histogramm in ein zweites Array aufsummieren.

Re: Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 14:31
von BlackJack
@MagBen: Warum in einer Schleife? Wenn man eh schon Numpy verwendet, sollte man das dann auch gleich Numpy machen lassen: `cumsum()`.

Re: Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 16:06
von Natrix natrix
Hallo,

danke für Eure Antworten. Da hätte ich wohl ein bisschen spezifischer werden sollen. :oops:
Klar kann man das mit der for-Schleife machen, sieht dann so aus - für 500 Zahlen machbar, für längere Zahlenreihen laaaangsam:

Code: Alles auswählen

# x1 ist hier als Beispiel ein np array mit 500 ints zwischen 1 und 100  

bins = 100                                           # Anzahl der bins entsprechend den möglichen Zahlenwerten
x2 = np.zeros(bins+1)

for i in range(0,len(x1)):
    y= x1[i]
    x2[y]+=1

for i in range(0,len(x2)):
    if i > 0:
        x2[i] = x2[i] + x2[i-1]
Die Vorgehensweise erscheint mit aber recht umständlich und ich hatte auf eine Standard-Funktion gehofft. An cumsum() hatte ich auch gedacht, aber die Funktion addiert die Werte auf und nicht die Anzahl der Werte.

Danke und Grüße

P.S. die Einrückung geht verloren...

Re: Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 16:47
von BlackJack
@Natrix natrix: Was gefällt Dir denn nicht an `histogram`? Und `cumsum` für den zweiten Teil?

Re: Gaussche Summenkurve aus Liste / Array

Verfasst: Mittwoch 29. März 2017, 17:38
von Natrix natrix
Bei näherem Nachdenken... gefällt mir schon :D,

bin erst noch über das Tupel vom Histogramm gestolpert...

x2 = np.cumsum(np.histogram(x1)[0])

War wohl nen Brett vorm Kopf, Danke fürs zersägen