%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_profilerin je IPython-sessie. - Importeer
calc_bmi_arraysuitbmi_arrays. - Gebruik, zodra je bovenstaande stappen hebt afgerond,
%mprunom de functiecalc_bmi_arrays()te profileren op je superheldengegevens. De arraysample_indices, de arrayhtsen de arraywtszijn 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
Praktische interactieve oefening
Zet theorie om in actie met een van onze interactieve oefeningen.
Begin met trainen