CommencerCommencer gratuitement

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

Afficher le cours

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 liste names, le tableau total_stats_np et le tableau avg_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))
Modifier et exécuter le code