Pokémon Summen und Durchschnitte ohne Schleife
Eine Liste mit 720 Pokémon wurde in deine Sitzung geladen: names
. Die entsprechenden Pokémon-Statistiken wurden in ein NumPy-Array namens stats
geladen. Jede Zeile von stats
entspricht einem Pokémon auf names
und jede Spalte steht für einen einzelnen Pokémon-Status (HP
, Attack
, Defense
, Special Attack
, Special Defense
und Speed
).
Du willst den Gesamtstattwert jedes Pokémon (d.h. die Summe jeder Zeile in stats
) und den Durchschnittsstattwert jedes Pokémon (d.h. den Mittelwert jeder Zeile in stats
) ermitteln, um das stärkste Pokémon zu finden.
Die folgende for-Schleife wurde geschrieben, um diese Werte zu sammeln:
poke_list = []
for pokemon,row in zip(names, stats):
total_stats = np.sum(row)
avg_stats = np.mean(row)
poke_list.append((pokemon, total_stats, avg_stats))
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Anleitung zur Übung
Ersetze die obige for-Schleife durch NumPy:
Erstelle ein Gesamtstatistik-Array (
total_stats_np
) mit der Methode.sum()
und gib die richtige Achse an.Erstelle ein durchschnittliches Statistik-Array (
avg_stats_np
) mit der Methode.mean()
und gib die richtige Achse an.Erstelle eine endgültige Ausgabeliste (
poke_list_np
), indem du die Listenames
, das Arraytotal_stats_np
und das Arrayavg_stats_np
kombinierst.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Create a total stats array
total_stats_np = ____.____(axis=____)
# Create an average stats array
avg_stats_np = ____
# Combine names, total_stats_np, and avg_stats_np into a list
poke_list_np = [*____(names, total_stats_np, avg_stats_np)]
print(poke_list_np == poke_list, '\n')
print(poke_list_np[:3])
print(poke_list[:3], '\n')
top_3 = sorted(poke_list_np, key=lambda x: x[1], reverse=True)[:3]
print('3 strongest Pokémon:\n{}'.format(top_3))