Mit %mprun: Held BMI
Du möchtest den Body-Mass-Index (BMI) für eine ausgewählte Gruppe von Helden berechnen. BMI kann mit der folgenden Formel berechnet werden:
Eine zufällige Auswahl von 25.000 Superhelden wurde als Array namens sample_indices
in deine Sitzung geladen. Diese Probe ist eine Liste von Indizes, die dem Index eines jeden Superhelden entspricht, der aus der Liste heroes
ausgewählt wurde.
Eine Funktion mit dem Namen calc_bmi_lists
wurde ebenfalls erstellt und in einer Datei mit dem Namen bmi_lists.py
gespeichert. Der Einfachheit halber wird sie unten angezeigt:
def calc_bmi_lists(sample_indices, hts, wts):
# Gather sample heights and weights as lists
s_hts = [hts[i] for i in sample_indices]
s_wts = [wts[i] for i in sample_indices]
# Convert heights from cm to m and square with list comprehension
s_hts_m_sqr = [(ht / 100) ** 2 for ht in s_hts]
# Calculate BMIs as a list with list comprehension
bmis = [s_wts[i] / s_hts_m_sqr[i] for i in range(len(sample_indices))]
return bmis
Beachte, dass diese Funktion alle notwendigen Berechnungen mit Hilfe des Listenverständnisses durchführt (daher der Name calc_bmi_lists()
). Schau dir diese Funktion genauer an und analysiere den Speicherbedarf für deine Berechnungen mit Listen:
- Lade das Paket
memory_profiler
in deine IPython-Sitzung. - Importiere
calc_bmi_lists
vonbmi_lists
. - Wenn du die oben genannten Schritte abgeschlossen hast, kannst du mit
%mprun
ein Profil für die Funktioncalc_bmi_lists()
erstellen, die mit den Daten deiner Superhelden arbeitet. Das Arrayhts
und das Arraywts
wurden bereits in deine Sitzung geladen.
Wenn du mit dem Codieren fertig bist, beantworte die folgende Frage:
Wie viel Speicherplatz verbrauchen die Codezeilen zum Listenverständnis in der Funktion calc_bmi_lists()
? (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
