Punteggi totali e medie dei Pokémon senza un ciclo
Un elenco di 720 Pokémon è stato caricato nella tua sessione con il nome names. Le statistiche corrispondenti di ciascun Pokémon sono state caricate come array NumPy chiamato stats. Ogni riga di stats corrisponde a un Pokémon in names e ogni colonna rappresenta una singola statistica del Pokémon (HP, Attack, Defense, Special Attack, Special Defense e Speed rispettivamente.)
Vuoi raccogliere il valore totale delle statistiche di ciascun Pokémon (ossia la somma di ogni riga in stats) e il valore medio delle statistiche di ciascun Pokémon (ossia la media di ogni riga in stats) per individuare il Pokémon più forte.
Il seguente ciclo for è stato scritto per raccogliere questi valori:
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))
Questo esercizio fa parte del corso
Scrivere codice Python efficiente
Istruzioni dell'esercizio
- Sostituisci il ciclo for sopra usando NumPy:
- Crea un array dei punteggi totali (
total_stats_np) usando il metodo.sum()e specificando l'asse corretto. - Crea un array delle medie (
avg_stats_np) usando il metodo.mean()e specificando l'asse corretto. - Crea una lista finale di output (
poke_list_np) combinando la listanames, l'arraytotal_stats_npe l'arrayavg_stats_np.
- Crea un array dei punteggi totali (
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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))