%mprun: Superhelden BMI
Du möchtest den Body-Mass-Index (BMI) für eine ausgewählte Gruppe von Helden berechnen. Der BMI kann mit der folgenden Formel berechnet werden:

Eine zufällige Stichprobe von 25.000 Superhelden wurde in deine Session als Array namens sample_indices geladen. Diese Stichprobe ist eine Liste von Indizes, die den Indizes der einzelnen Superhelden aus der Liste heroes entsprechen.
Zudem wurde eine Funktion namens calc_bmi_lists erstellt und in einer Datei bmi_lists.py gespeichert. Zur Vereinfachung wird diese 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 von Listenabstraktion durchführt (daher der Name calc_bmi_lists()). Schau dir diese Funktion genauer an und überprüfe, wie viel Speicherplatz deine Berechnungen mit Listen brauchen:
- Lade das Paket
memory_profilerin deine IPython-Session. - Importiere
calc_bmi_listsausbmi_lists. - Wenn du die obigen Schritte erledigt hast, kannst du mit
%mprundie Funktioncalc_bmi_lists()analysieren, die auf deine Superhelden-Daten angewendet wird. Die Arrayshtsundwtswurden bereits in deine Session geladen.
Wenn du mit dem Programmieren fertig bist, beantworte bitte die folgende Frage:
Wie viel Speicher benötigen die Codezeilen für die Listenabstraktion in der Funktion calc_bmi_lists()? (Was ist die Summer der 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