%mprun: Superhelden BMI 2.0
Mal sehen, ob wir mit einer anderen Methode zur Berechnung des BMI etwas Speicherplatz sparen können. Du erinnerst dich, dass die Größe und das Gewicht jedes Helden in einem numpy-Array gespeichert sind. Das heißt, du kannst die praktischen Array-Indizierungsfunktionen und das Broadcasting von NumPy nutzen, um deine Berechnungen durchzuführen. Eine Funktion namens calc_bmi_arrays wurde erstellt und in einer Datei namens bmi_arrays.py gespeichert. Zur Vereinfachung wird diese unten angezeigt:
def calc_bmi_arrays(sample_indices, hts, wts):
# Gather sample heights and weights as arrays
s_hts = hts[sample_indices]
s_wts = wts[sample_indices]
# Convert heights from cm to m and square with broadcasting
s_hts_m_sqr = (s_hts / 100) ** 2
# Calculate BMIs as an array using broadcasting
bmis = s_wts / s_hts_m_sqr
return bmis
Beachte, dass diese Funktion alle notwendigen Berechnungen mittels Arrays durchführt.
Mal sehen, ob dieser aktualisierte Array-Ansatz deinen Speicherbedarf verringert:
- Lade das Paket
memory_profilerin deine IPython-Session. - Importiere
calc_bmi_arraysausbmi_arrays. - Wenn du die obigen Schritte erledigt hast, kannst du mit
%mprundie Funktioncalc_bmi_arrays()analysieren, die auf deine Superhelden-Daten angewendet wird. Die Arrayssample_indices,htsundwtswurden in deine Session geladen.
Wenn du mit dem Programmieren fertig bist, beantworte bitte die folgende Frage:
Wie viel Speicher brauchen die Codezeilen für die Array-Indizierung und das Broadcasting in der Funktion calc_bmi_array()? (Was ist Summe für die Spalte Increment für diese vier Codezeilen?)
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Interaktive Übung
In dieser interaktiven Übung kannst du die Theorie in die Praxis umsetzen.
Übung starten