使用 %mprun:英雄 BMI
您想为一组选定的英雄计算体重指数(BMI)。BMI 的计算公式如下:

已经将 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 会话中。 - 从
bmi_lists导入calc_bmi_lists。 - 完成上述步骤后,使用
%mprun对作用于您的超级英雄数据的calc_bmi_lists()函数进行分析。hts数组和wts数组已预先加载到您的会话中。
完成编码后,请回答以下问题:
列表推导代码行在 calc_bmi_lists() 函数中共消耗了多少内存?(即,将这四行代码的 Increment 列求和得到的总量是多少?)
本练习是课程的一部分
