Использование %mprun: ИМТ супергероев
Вы хотите рассчитать индекс массы тела (ИМТ) для выбранной выборки супергероев. ИМТ вычисляется по следующей формуле:

Случайная выборка из 25 000 супергероев загружена в вашу сессию в виде массива sample_indices. Это список индексов, соответствующих индексам каждого супергероя в списке heroes.
Также была создана функция calc_bmi_lists, сохранённая в файл bmi_lists.py. Для удобства она приведена ниже:
def calc_bmi_lists(sample_indices, hts, wts):
# Gather sample heights and weights as lists
s_hts = [hts[i] for i in sample_indices]
s_wts = [wts[i] for i in sample_indices]
# Convert heights from cm to m and square with list comprehension
s_hts_m_sqr = [(ht / 100) ** 2 for ht in s_hts]
# Calculate BMIs as a list with list comprehension
bmis = [s_wts[i] / s_hts_m_sqr[i] for i in range(len(sample_indices))]
return bmis
Обратите внимание, что все вычисления в этой функции выполняются с помощью генераторов списков (отсюда и название calc_bmi_lists()). Изучите эту функцию подробнее и проанализируйте потребление памяти при выполнении вычислений с использованием списков:
- Загрузите пакет
memory_profilerв вашу сессию IPython. - Импортируйте
calc_bmi_listsизbmi_lists. - Выполнив указанные шаги, используйте
%mprunдля профилирования функцииcalc_bmi_lists()на данных о супергероях. Массивыhtsиwtsуже загружены в вашу сессию.
После завершения работы ответьте на следующий вопрос:
Сколько памяти потребляют строки кода с генераторами списков в функции calc_bmi_lists()? (то есть какова общая сумма значений столбца Increment для этих четырёх строк?)
Это упражнение является частью курса
Эффективный код на Python
Практическое интерактивное упражнение
Превратите теорию в практику с помощью одного из наших интерактивных упражнений
Начать упражнение