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
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_npi tablicęavg_stats_np.
- Utwórz tablicę sumy statystyk (
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))