Totaux et moyennes des Pokémon sans boucle
Une liste de 720 Pokémon a été chargée dans votre session sous le nom names. Les statistiques correspondantes de chaque Pokémon ont été chargées dans un tableau NumPy appelé stats. Chaque rangée de stats correspond à un Pokémon de names et chaque colonne représente une statistique individuelle du Pokémon (HP, Attack, Defense, Special Attack, Special Defense et Speed, respectivement.)
Vous voulez recueillir la valeur totale des statistiques de chaque Pokémon (c.-à-d. la somme de chaque rangée dans stats) et la valeur moyenne des statistiques de chaque Pokémon (c.-à-d. la moyenne de chaque rangée dans stats) afin de trouver le Pokémon le plus fort.
La boucle for ci-dessous a été écrite pour recueillir 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))
Cette activité fait partie du cours
Rédiger du code Python efficace
Instructions de l’exercice
- Remplacez la boucle for ci-dessus en utilisant NumPy :
- Créez un tableau des totaux (
total_stats_np) avec la méthode.sum()en précisant l'axe approprié. - Créez un tableau des moyennes (
avg_stats_np) avec la méthode.mean()en précisant l'axe approprié. - Créez une liste de sortie finale (
poke_list_np) en combinant la listenames, le tableautotal_stats_npet le tableauavg_stats_np.
- Créez un tableau des totaux (
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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))