Підсумки та середні значення Pokémon без циклу
Список із 720 Pokémon завантажено у вашу сесію під назвою names. Відповідні характеристики кожного Pokémon завантажено як масив NumPy під назвою stats. Кожен рядок stats відповідає певному Pokémon у names, а кожен стовпець представляє окрему характеристику Pokémon (відповідно HP, Attack, Defense, Special Attack, Special Defense і Speed).
Ви хочете зібрати загальне значення характеристик кожного Pokémon (тобто суму кожного рядка в stats) і середнє значення характеристик кожного Pokémon (тобто середнє кожного рядка в stats), щоб знайти найсильнішого Pokémon.
Нижче наведено цикл for, який було написано для збору цих значень:
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))
Ця вправа є частиною курсу
Ефективне написання коду Python
Інструкції до вправи
- Замініть наведений вище цикл for на NumPy:
- Створіть масив загальних характеристик (
total_stats_np) за допомогою методу.sum()і вкажіть правильну вісь. - Створіть масив середніх характеристик (
avg_stats_np) за допомогою методу.mean()і вкажіть правильну вісь. - Створіть підсумковий вихідний список (
poke_list_np), об'єднавши списокnames, масивtotal_stats_npі масивavg_stats_np.
- Створіть масив загальних характеристик (
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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))