%mprun gebruiken: Hero BMI
Je wilt de body mass index (BMI) berekenen voor een geselecteerde steekproef van helden. BMI kun je berekenen met de onderstaande formule:

Een willekeurige steekproef van 25.000 superhelden is in je sessie geladen als een array met de naam sample_indices. Deze steekproef is een lijst met indexen die overeenkomen met de index van elke superheld die uit de lijst heroes is geselecteerd.
Er is ook een functie met de naam calc_bmi_lists gemaakt en opgeslagen in een bestand met de titel bmi_lists.py. Voor het gemak staat hij hieronder weergegeven:
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
Merk op dat deze functie alle benodigde berekeningen uitvoert met list comprehensions (vandaar de naam calc_bmi_lists()). Duik dieper in deze functie en analyseer de geheugendruk van je berekeningen met lijsten:
- Laad het pakket
memory_profilerin je IPython-sessie. - Importeer
calc_bmi_listsuitbmi_lists. - Gebruik, zodra je bovenstaande stappen hebt voltooid,
%mprunom de functiecalc_bmi_lists()te profileren op je superheldendata. De arrayshtsenwtszijn al in je sessie geladen.
Beantwoord na het coderen de volgende vraag:
Hoeveel geheugen gebruiken de list-comprehension-codelijnen in de functie calc_bmi_lists()? (m.a.w. wat is de totale som van de kolom Increment voor deze vier codelijnen?)
Deze oefening maakt deel uit van de cursus
Efficiënte Python-code schrijven
Praktische interactieve oefening
Zet theorie om in actie met een van onze interactieve oefeningen.
Begin met trainen