НачатьНачать бесплатно

Суммарные и средние показатели покемонов без цикла

В вашей сессии загружен список из 720 покемонов под названием names. Статистика каждого покемона загружена в виде массива NumPy под названием stats. Каждая строка stats соответствует покемону из names, а каждый столбец представляет отдельный параметр покемона (HP, Attack, Defense, Special Attack, Special Defense и Speed соответственно).

Вы хотите получить суммарное значение характеристик каждого покемона (то есть сумму каждой строки в stats) и среднее значение его характеристик (то есть среднее арифметическое каждой строки в stats), чтобы найти самого сильного покемона.

Для сбора этих значений был написан следующий цикл 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))
Редактировать и запускать код