Seite 1 von 1

Häufigstes Element einer Liste ausgeben

Verfasst: Montag 26. November 2018, 13:47
von Ede1994
Hallo,
folgendes Problem: ich möchte eine Liste aus vielen int-Zahlen wie folgt bearbeiten. Die Liste soll in 20er Schritten auf die häufigste Zahl untersucht werden und diese Zahl soll dann in eine neue Liste übertragen werden.
Bsp: [0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,4,5.............] => Ergebnis: [0]
[...,0,0,0,0,1,1,1,2,2,2,2,2,2,2,2,2,3,5,5............] => Ergebnis: [0,2]
usw.
Aus einer Liste mit 400 Zahlen wird also eine Liste mit 20 zahlen!
Ich benutze den folgenden Code um die häufigste Zahl zu bestimmen:

Code: Alles auswählen

z = max(set(data_events3), key=data_events3.count)
Wie kann ich jetzt immer in 20er Schritten die Ur-Liste durchgehen und die Ergebnisse in die neue Liste einfügen? Was passiert wenn die Liste z.B. 416 Elemente hat?

DANKE!

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Montag 26. November 2018, 14:29
von __blackjack__
@Ede1994: Schau mal in der Python-Dokumentation nach dem Tutorial. Speziell ``for``-Schleifen und ”slicing”-Syntax dürften Dich interessieren um in einer Schleife immer 20 Elemente verarbeiten.

Was bei 416 Elementen passiert, hängt davon ab was Du für Code schreibst. Je nach dem was Du willst was in dem Fall passiert, musst Du halt Code schreiben, der das tut was Du willst. :-)

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Montag 26. November 2018, 14:39
von ThomasL
Pack deine Liste in ein Numpy-Array, bringe es in die Form die du haben willst und dann kannst du scipy.stats.mode() darauf anwenden,
liefert dir sofort alle Mode Werte und die Anzahl wie oft

Code: Alles auswählen

import numpy as np
from scipy import stats

a = np.random.rand(400) * 10
a = a.astype(int)

a = a.reshape(20, 20)
m = stats.mode(a)
print(m)  # Mode Werte und wie oft
print(m[0][0]) # nur die Mode Werte

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Montag 26. November 2018, 14:49
von Ede1994
Danke für die Antworten!
Ich hatte zuvor folgendes probiert:

Code: Alles auswählen

data_events4 = [data_events3[i:i+20] for i in xrange(0, len(data_events3),20)]
So konnte ich meine Liste schon mal unterteilen, jedoch komme ich dann nicht weiter :D
Pack deine Liste in ein Numpy-Array, bringe es in die Form die du haben willst und dann kannst du scipy.stats.mode() darauf anwenden,
liefert dir sofort alle Mode Werte und die Anzahl wie oft
Das verstehe ich nicht wirklich :?:

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Montag 26. November 2018, 16:19
von __blackjack__
@Ede1994: Wieso kommst Du dann nicht weiter? Eine Teillösung um in einer Liste das häufigste Element zu suchen hast Du doch bereits in Deinem ersten Beitrag gepostet. Das musst Du doch jetzt nur noch auf jede Teilliste anwenden‽

Wobei die Teillösung nicht die effizienteste ist jedes Element einzeln zu zählen und dafür immer wieder die Liste durchzugehen. Schau Dir mal `collections.Counter` an.

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Dienstag 27. November 2018, 11:30
von Ede1994
__blackjack__ hat geschrieben: Montag 26. November 2018, 16:19 Wobei die Teillösung nicht die effizienteste ist jedes Element einzeln zu zählen und dafür immer wieder die Liste durchzugehen. Schau Dir mal `collections.Counter` an.
Ich hab mir das mal angeschaut und es funktioniert auch. ABER ich möchte ja nicht nur wissen welche Zahl am häufigsten vorkommt, sondern ich will diese Zahl in eine neue Liste eintragen (wobei die Ur-Liste immer in 20er-Blöcken bearbeitet werden soll) und daran scheitere ich bis jetzt!

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Dienstag 27. November 2018, 13:02
von Sirius3
Wenn Du weißt, wie Du die Häufigkeit in einer Liste bestimmen kannst und Du schon gezeigt hast, wie man eine Liste in Teillisten aufteilt, was fehlt Dir dann noch, um beides zu kombinieren?

Re: Häufigstes Element einer Liste ausgeben

Verfasst: Dienstag 27. November 2018, 14:31
von Ede1994
Danke für all die Anregungen und Hilfen!
Ich konnte das Problem jetzt lösen!