Aan de slagGa gratis aan de slag

%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:

BMI = massa(kg) / lengte(m)^2

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_profiler in je IPython-sessie.
  • Importeer calc_bmi_lists uit bmi_lists.
  • Gebruik, zodra je bovenstaande stappen hebt voltooid, %mprun om de functie calc_bmi_lists() te profileren op je superheldendata. De arrays hts en wts zijn 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

Cursus bekijken

Praktische interactieve oefening

Zet theorie om in actie met een van onze interactieve oefeningen.

Begin met trainen