ComeçarComece gratuitamente

Totais e médias de Pokémon sem um loop

Uma lista de 720 Pokémon foi carregada em sua sessão chamada names. As estatísticas correspondentes de cada Pokémon foram carregadas como uma matriz NumPy chamada stats. Cada linha de stats corresponde a um Pokémon em names e cada coluna representa uma estatística individual do Pokémon (HP, Attack, Defense, Special Attack, Special Defense e Speed respectivamente).

Você deseja reunir o valor total de estatísticas de cada Pokémon (ou seja, a soma de cada linha em stats) e o valor médio de estatísticas de cada Pokémon (ou seja, a média de cada linha em stats) para que você encontre o Pokémon mais forte.

O loop for abaixo foi escrito para coletar esses 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 exercício faz parte do curso

Como escrever um código Python eficiente

Ver Curso

Instruções de exercício

  • Substitua o loop for acima usando o NumPy:

    • Crie uma matriz de estatísticas totais (total_stats_np) usando o método .sum() e especificando o eixo correto.

    • Crie uma matriz de estatísticas médias (avg_stats_np) usando o método .mean() e especificando o eixo correto.

    • Crie uma lista de saída final (poke_list_np) combinando a lista names, a matriz total_stats_np e a matriz avg_stats_np.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

# 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 e executar código