ComenzarEmpieza gratis

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

Ver curso

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 lista names, la matriz total_stats_np y la matriz avg_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))
Editar y ejecutar código