Totales y medias Pokémon sin bucle
Se ha cargado una lista de 720 Pokémon en tu sesión llamada names
. Las estadísticas correspondientes a cada Pokémon se han cargado como una matriz NumPy llamada stats
. Cada fila de stats
corresponde a un Pokémon de names
y cada columna representa una estadística individual de un Pokémon (HP
, Attack
, Defense
, Special Attack
, Special Defense
y Speed
respectivamente).
Quieres reunir el valor total de las estadísticas de cada Pokémon (es decir, la suma de cada fila en stats
) y el valor medio de las estadísticas de cada Pokémon (es decir, la media de cada fila en stats
) para encontrar al Pokémon más fuerte.
Se escribió el siguiente bucle for para recoger estos valores:
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))
Este ejercicio forma parte del curso
Escribir código Python eficiente
Instrucciones de ejercicio
Sustituye el bucle for anterior utilizando NumPy:
Crea una matriz de estadísticas totales (
total_stats_np
) utilizando el método.sum()
y especificando el eje correcto.Crea una matriz de estadísticas medias (
avg_stats_np
) utilizando el método.mean()
y especificando el eje correcto.Crea una lista de salida final (
poke_list_np
) combinando la listanames
, la matriztotal_stats_np
y la matrizavg_stats_np
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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))