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
Ö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 listannames, arrayentotal_stats_npoch arrayenavg_stats_np.
- Skapa en array med totala värden (
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))