Totaux et moyennes Pokémon sans boucle
Une liste de 720 Pokémon a été chargée dans votre session intitulée names. Les statistiques correspondantes de chaque Pokémon ont été chargées sous forme de tableau NumPy appelé stats. Chaque ligne de stats correspond à un Pokémon dans names et chaque colonne représente une statistique individuelle d'un Pokémon (HP, Attack, Defense, Special Attack, Special Defense et Speed respectivement).
Vous souhaitez calculer la valeur statistique totale de chaque Pokémon (c'est-à-dire la somme de chaque ligne dans stats) et la valeur statistique moyenne de chaque Pokémon (c'est-à-dire la moyenne de chaque ligne dans stats) afin d'identifier le Pokémon le plus puissant.
La boucle for ci-dessous a été conçue pour collecter ces valeurs :
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))
Cet exercice fait partie du cours
Écrire du code Python efficace
Instructions
Veuillez remplacer la boucle for ci-dessus par NumPy :
Créez un tableau de statistiques globales (
total_stats_np) à l'aide de la méthode.sum()et en spécifiant l'axe approprié.Créez un tableau de statistiques moyennes (
avg_stats_np) en utilisant la méthode.mean()et en spécifiant l'axe approprié.Créez une liste de résultat final (
poke_list_np) en combinant la listenames, le tableautotal_stats_npet le tableauavg_stats_np.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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))