Mit %mprun: Held BMI 2.0
Mal sehen, ob wir mit einem anderen Ansatz zur Berechnung der BMIs etwas Speicherplatz sparen können. Wenn du dich erinnerst, wird die Größe und das Gewicht jedes Helden in einem numpy
Array gespeichert. Das bedeutet, dass du die praktischen Array-Indizierungsfunktionen und das Broadcasting von NumPy nutzen kannst, um deine Berechnungen durchzuführen. Es wurde eine Funktion mit dem Namen calc_bmi_arrays
erstellt und in einer Datei mit dem Namen bmi_arrays.py
gespeichert. Der Einfachheit halber wird sie 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 mit Arrays durchführt.
Mal sehen, ob dieser aktualisierte Array-Ansatz deinen Speicherplatzbedarf verringert:
- Lade das Paket
memory_profiler
in deine IPython-Sitzung. - Importiere
calc_bmi_arrays
vonbmi_arrays
. - Wenn du die oben genannten Schritte abgeschlossen hast, kannst du mit
%mprun
ein Profil für die Funktioncalc_bmi_arrays()
erstellen, die mit den Daten deiner Superhelden arbeitet. Das Arraysample_indices
, das Arrayhts
und das Arraywts
wurden in deine Sitzung geladen.
Wenn du mit dem Codieren fertig bist, beantworte die folgende Frage:
Wie viel Speicherplatz verbrauchen die Codezeilen für die Array-Indizierung und die Übertragung in der Funktion calc_bmi_array()
? (d.h., wie hoch ist die Gesamtsumme der Spalte Increment
für diese vier Codezeilen?)
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Interaktive Übung zum Anfassen
Setzen Sie die Theorie mit einer unserer interaktiven Übungen in die Tat um
