CommencezCommencez gratuitement

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

Voir le cours

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 liste names, le tableau total_stats_np et le tableau avg_stats_np.

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))
Modifier et exécuter le code