Zacznij terazZacznij za darmo

Sumy i średnie Pokémonów bez pętli

Do sesji została wczytana lista 720 Pokémonów o nazwie names. Statystyki każdego Pokémona są zapisane w tablicy NumPy o nazwie stats. Każdy wiersz tablicy stats odpowiada jednemu Pokémonowi z listy names, a każda kolumna reprezentuje jedną statystykę (HP, Attack, Defense, Special Attack, Special Defense i Speed).

Chcesz zebrać łączną wartość statystyk każdego Pokémona (czyli sumę każdego wiersza tablicy stats) oraz średnią wartość statystyk (czyli średnią każdego wiersza tablicy stats), aby znaleźć najpotężniejszego Pokémona.

Poniższa pętla for została napisana w celu zebrania tych wartości:

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))

To ćwiczenie jest częścią kursu

Wydajny kod w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Zastąp powyższą pętlę for, korzystając z NumPy:
    • Utwórz tablicę sumy statystyk (total_stats_np), używając metody .sum() i podając właściwą oś.
    • Utwórz tablicę średnich statystyk (avg_stats_np), używając metody .mean() i podając właściwą oś.
    • Utwórz końcową listę wynikową (poke_list_np), łącząc listę names, tablicę total_stats_np i tablicę avg_stats_np.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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))
Edytuj i uruchom kod