Kom igångKom igång gratis

Använda %mprun: Hjälte-BMI

Du vill beräkna kroppsmasseindex (BMI) för ett urval av hjältar. BMI beräknas enligt formeln nedan:

BMI = mass(kg) / height(m)^2

Ett slumpmässigt urval på 25 000 superhjältar har laddats in i din session som en array med namnet sample_indices. Det här urvalet är en lista med index som motsvarar varje superhjältes index i listan heroes.

En funktion med namnet calc_bmi_lists har också skapats och sparats i en fil med namnet bmi_lists.py. Den visas nedan för din bekvämlighet:

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

Observera att funktionen utför alla beräkningar med hjälp av listomfattningar (därav namnet calc_bmi_lists()). Utforska funktionen närmare och analysera minnesavtrycket för dina beräkningar när du använder listor:

  • Ladda in paketet memory_profiler i din IPython-session.
  • Importera calc_bmi_lists från bmi_lists.
  • När du har genomfört stegen ovan, använd %mprun för att profilera funktionen calc_bmi_lists() på dina superhjältedata. Arrayerna hts och wts har redan laddats in i din session.

När du är klar med koden, svara på följande fråga:

Hur mycket minne förbrukar raderna med listomfattningar i funktionen calc_bmi_lists()? (Det vill säga, vad är den totala summan av kolumnen Increment för dessa fyra kodrader?)

Den här övningen är en del av kursen

Att skriva effektiv Python-kod

Visa kurs

Interaktiv övning med praktiskt arbete

Gör teori till handling med en av våra interaktiva övningar

Starta övningen