Nicht viel von einem Statistik-Typ, the mode in diesem Sinne scheint als "der Wert, der am häufigsten auftritt" definiert werden.
Aus dieser Beschreibung scheint es die offensichtliche Möglichkeit, dies unter Verwendung einer Hash-Tabelle zu implementieren, die Nummer als einen Schlüssel zu verwenden und als den gespeicherten Wert einen Frequenzzähler zu verwenden.
Dann durch jede Zahl nur Schleifen in Python Pseudo-Code wäre dies so etwas wie:
array = [1.0, 1.2, 0.4, ...] # A bunch of numbers
counts = {}
for a in array:
if a in counts:
counts[a] += 1
else:
counts[a] = 1
Dann den größten Wert extrahieren, die Sie benötigen würden, und die entsprechende Taste finden:
sorted([(v, k) for k, v in counts.items()])[-1][1]
Dies erstellt eine sortierte Liste von (Wert, Schlüssel) Paaren, sortiert nach Wert, und extrahiert dann den Schlüssel (1
) aus dem letzten ([-1]
) Paar.
Ich habe mich nicht mit einem defaultdict oder ähnlichem beschäftigt, zur Veranschaulichung denke ich, dass die if
eher hilfreich ist.
HINWEIS: Ich kann nicht garantieren, dass dies der kanonische Weg zur Lösung des Problems ist. Das ist genau das, was ich tun würde, wenn jemand mich auffordert, das Problem zu lösen (und vielleicht angedeutet hat, dass die Verwendung eines Hashes eine gute Idee ist).
Es ist ziemlich nahe, was ich zu tun hätte. – Vatine