Aan de slagGa gratis aan de slag

%mprun gebruiken: Hero BMI 2.0

Laten we kijken of een andere aanpak om de BMI's te berekenen geheugen kan besparen. Zoals je je herinnert, zijn de lengte en het gewicht van elke held opgeslagen in een numpy-array. Dat betekent dat je NumPy’s handige array-indexering en broadcasting kunt gebruiken om je berekeningen uit te voeren. Er is een functie met de naam calc_bmi_arrays gemaakt en opgeslagen in een bestand met de titel bmi_arrays.py. Voor het gemak staat deze hieronder weergegeven:

def calc_bmi_arrays(sample_indices, hts, wts):

    # Verzamel steekproef-lengtes en -gewichten als arrays
    s_hts = hts[sample_indices]
    s_wts = wts[sample_indices]

    # Zet lengtes om van cm naar m en kwadrateer met broadcasting
    s_hts_m_sqr = (s_hts / 100) ** 2

    # Bereken BMI's als een array met broadcasting
    bmis = s_wts / s_hts_m_sqr

    return bmis

Let op dat deze functie alle benodigde berekeningen uitvoert met arrays.

Laten we kijken of deze vernieuwde array-aanpak je geheugengebruik verlaagt:

  • Laad het pakket memory_profiler in je IPython-sessie.
  • Importeer calc_bmi_arrays uit bmi_arrays.
  • Gebruik, zodra je bovenstaande stappen hebt afgerond, %mprun om de functie calc_bmi_arrays() te profileren op je superheldengegevens. De array sample_indices, de array hts en de array wts zijn in je sessie geladen.

Beantwoord na het coderen de volgende vraag:

Hoeveel geheugen verbruiken de regels met array-indexering en broadcasting in de functie calc_bmi_array()? (dus: wat is de totale som van de kolom Increment voor deze vier regels code?)

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