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 :
Veuillez créer un tableau de statistiques globales (
total_stats_np
) à l'aide de la méthode.sum()
et en spécifiant l'axe approprié.Veuillez créer un tableau de statistiques moyennes (
avg_stats_np
) en utilisant la méthode.mean()
et en spécifiant l'axe approprié.Veuillez créer une liste de sortie finale (
poke_list_np
) en combinant la listenames
, le tableautotal_stats_np
et 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))