Seite 1 von 1
Häufigkeitsverteilung im Numpy Array
Verfasst: Montag 26. Januar 2015, 19:12
von scandium
Hallo Zusammen,
für eine statische Auswertung, habe ich mir ein m x n Matrix erstellt. Die Werte sind Integer.
Ich würde gerne eine Häufigkeitsverteilung machen, sprich welcher Wert wie of vor kommt.
Die Matrix liegt als Numpy Array vor.
Es ist mein erstes Projekt mit Python und bin für einen guten Tipp immer dankbar.
Gruß
Harald
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Montag 26. Januar 2015, 19:18
von EyDu
Hallo und willkommen im Forum!
"scipy.stats.itemfreq" hilft dir da weiter.
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Dienstag 27. Januar 2015, 20:19
von scandium
Hallo EyDu,
vielen Dank, genau das hatte ich gesucht.
Zum Syntax hätte ich noch eine Frage:
Scipy habe geladen mit:
im Script aufgerufen mit:
Warum werden Scipy Funktionen nicht aufgerufen wie in Numpy, also so:
Hätte:
nicht auch funktionieren müssen?
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Dienstag 27. Januar 2015, 20:29
von Sirius3
@scandium: Wenn Du scipy als sp einbindest, dann gibt es den Namen stats nicht, den mußt Du also noch irgendwo explizit als "from scipy import stats" eingebunden haben.
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Dienstag 27. Januar 2015, 21:11
von scandium
stimmt das habe ich auch gemacht.
Wie würde ich die Funktion mit "import scipy as sp" aufrufen?
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Mittwoch 28. Januar 2015, 00:29
von EyDu
Das geht nicht, du musst das stats-Modul in jedem Fall importieren.
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Mittwoch 28. Januar 2015, 19:23
von scandium
Eine Frage noch der von "stats.itemfreq(m)" erzeugten Array.
Dieses Array würde ich gerne nach der Häufigkeit mit dem dazugehörigen Element sortieren.
Da ich bisher nichts passenden gefunden habe, würde ich es erstmal so probieren:
* ein Spaltenvektor aus m1[:,1] machen
* diesen mit np.sort(x) der Größe nach sortieren
* dann mit For-Schleifen den passenden Wert in m1[:,0] suchen und die Matrix neu aufbauen
Gibt es vielleicht etwas passendes hierfür?
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Mittwoch 28. Januar 2015, 19:31
von Sirius3
Du suchst argsort.
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Mittwoch 28. Januar 2015, 20:57
von scandium
Ich kann den Output von "numpy.argsort¶" nicht deuten:
Im Manual finde ich folgendes: It returns an array of indices of the same shape as a that index data along the given axis in sorted order.
Was ist denn mit der Achse gemeint?
Beim Beispiel: "x = np.array([3,1,2,4,7])"
np.argsort(x)
bekomme ich ein Output von: "array([1, 2, 0, 3, 4])"
Nach welchen Kriterium wurden die Indizes vergeben?
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Mittwoch 28. Januar 2015, 21:16
von Sirius3
na, die kleinste Zahl ist bei Index 1, die zweikleinste bei 2 usw.
Re: Häufigkeitsverteilung im Numpy Array
Verfasst: Donnerstag 29. Januar 2015, 20:48
von scandium
Alles klar, jetzt habe es auch verstanden...
Vielen Dank