Usare %mprun: BMI degli eroi
Vuoi calcolare il body mass index (BMI) per un campione selezionato di supereroi. Il BMI può essere calcolato con la formula seguente:

Un campione casuale di 25.000 supereroi è stato caricato nella tua sessione come array chiamato sample_indices. Questo campione è un elenco di indici che corrispondono all'indice di ogni supereroe selezionato dalla lista heroes.
È stata inoltre creata una funzione chiamata calc_bmi_lists e salvata in un file dal titolo bmi_lists.py. Per comodità, è mostrata qui sotto:
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
Nota che questa funzione esegue tutti i calcoli necessari usando list comprehension (da cui il nome calc_bmi_lists()). Esamina più a fondo questa funzione e analizza l'impatto sulla memoria nell'eseguire i calcoli usando liste:
- Carica il pacchetto
memory_profilernella tua sessione IPython. - Importa
calc_bmi_listsdabmi_lists. - Una volta completati i passaggi sopra, usa
%mprunper profilare la funzionecalc_bmi_lists()applicata ai dati dei tuoi supereroi. Gli arrayhtsewtssono già stati caricati nella tua sessione.
Dopo aver terminato di scrivere il codice, rispondi alla seguente domanda:
Quanta memoria consumano le righe di codice con list comprehension nella funzione calc_bmi_lists()? (cioè qual è la somma totale della colonna Increment per queste quattro righe di codice?)
Questo esercizio fa parte del corso
Scrivere codice Python efficiente
Esercizio pratico interattivo
Passa dalla teoria alla pratica con uno dei nostri esercizi interattivi
Inizia esercizio