Erste SchritteKostenlos loslegen

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 von bmi_arrays.
  • Wenn du die oben genannten Schritte abgeschlossen hast, kannst du mit %mprun ein Profil für die Funktion calc_bmi_arrays() erstellen, die mit den Daten deiner Superhelden arbeitet. Das Array sample_indices, das Array hts und das Array wts 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

Kurs anzeigen

Interaktive Übung zum Anfassen

Setzen Sie die Theorie mit einer unserer interaktiven Übungen in die Tat um

Beginnen Sie mit dem Training