使用 %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
請注意,這個函式使用「列表生成式」(list comprehension)完成所有必要的計算(因此命名為 calc_bmi_lists())。更深入檢視此函式,並分析用「清單」來執行計算時的記憶體使用量:
- 在你的 IPython 工作階段中載入
memory_profiler套件。 - 從
bmi_lists匯入calc_bmi_lists。 - 完成上述步驟後,使用
%mprun來為calc_bmi_lists()函式在你的超級英雄資料上進行剖析。hts陣列與wts陣列已載入到你的工作階段中。
完成撰寫程式碼後,回答下列問題:
「calc_bmi_lists() 函式中使用列表生成式的那些程式碼行,一共消耗了多少記憶體?(也就是這四行程式碼的 Increment 欄位總和是多少?)」
本練習屬於課程
