LoslegenKostenlos loslegen

%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_profiler in deine IPython-Session.
  • Importiere calc_bmi_arrays aus bmi_arrays.
  • Wenn du die obigen Schritte erledigt hast, kannst du mit %mprun die Funktion calc_bmi_arrays() analysieren, die auf deine Superhelden-Daten angewendet wird. Die Arrays sample_indices, hts und wts wurden 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

Kurs anzeigen

Interaktive Übung

In dieser interaktiven Übung kannst du die Theorie in die Praxis umsetzen.

Übung starten