Součty a průměry Pokémonů bez smyčky
Do tvé session byl načten seznam 720 Pokémonů s názvem names. Statistiky každého Pokémona jsou uloženy jako NumPy pole stats. Každý řádek stats odpovídá jednomu Pokémonovi ze seznamu names a každý sloupec reprezentuje jednu statistiku (HP, Attack, Defense, Special Attack, Special Defense a Speed).
Chceš zjistit celkový součet statistik každého Pokémona (tj. součet hodnot v každém řádku stats) a průměrnou hodnotu statistik každého Pokémona (tj. průměr hodnot v každém řádku stats), abys našel/nalezla nejsilnějšího Pokémona.
Níže je smyčka for, která tyto hodnoty sbírá:
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))
Toto cvičení je součástí kurzu
Psaní efektivního kódu v Pythonu
Pokyny k cvičení
- Nahraď výše uvedenou smyčku for pomocí NumPy:
- Vytvoř pole celkových statistik (
total_stats_np) pomocí metody.sum()se správně zadanou osou. - Vytvoř pole průměrných statistik (
avg_stats_np) pomocí metody.mean()se správně zadanou osou. - Vytvoř výsledný výstupní seznam (
poke_list_np) spojením seznamunames, poletotal_stats_npa poleavg_stats_np.
- Vytvoř pole celkových statistik (
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))