Kom igångKom igång gratis

Pokémons totaler och medelvärden utan en slinga

En lista med 720 Pokémon har laddats in i din session under namnet names. Varje Pokémons statistik har laddats in som en NumPy-array kallad stats. Varje rad i stats motsvarar en Pokémon i names, och varje kolumn representerar en enskild statistik (HP, Attack, Defense, Special Attack, Special Defense och Speed).

Målet är att samla ihop varje Pokémons totala statistikvärde (dvs. summan av varje rad i stats) och varje Pokémons genomsnittliga statistikvärde (dvs. medelvärdet av varje rad i stats) för att hitta den starkaste Pokémonen.

Nedan finns en for-slinga som skrivits för att samla in dessa värden:

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))

Den här övningen är en del av kursen

Att skriva effektiv Python-kod

Visa kurs

Övningsinstruktioner

  • Ersätt for-slingan ovan med NumPy:
    • Skapa en array med totala värden (total_stats_np) med hjälp av metoden .sum() och ange rätt axel.
    • Skapa en array med genomsnittsvärden (avg_stats_np) med hjälp av metoden .mean() och ange rätt axel.
    • Skapa den slutliga utdatalistan (poke_list_np) genom att kombinera listan names, arrayen total_stats_np och arrayen avg_stats_np.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))
Redigera och kör kod