Utilizando %mprun: Héroe IMC
Te gustaría calcular el índice de masa corporal (IMC) de una muestra seleccionada de héroes. El IMC puede calcularse mediante la siguiente fórmula:
Se ha cargado en tu sesión una muestra aleatoria de 25.000 superhéroes como un arreglo llamado sample_indices
. Esta muestra es una lista de índices que corresponde al índice de cada superhéroe seleccionado en la lista heroes
.
También se ha creado una función llamada calc_bmi_lists
y se ha guardado en un archivo llamado bmi_lists.py
. Para mayor comodidad, se muestra a continuación:
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
Observa que esta función realiza todos los cálculos necesarios utilizando la comprensión de listas (de ahí el nombre calc_bmi_lists()
). Profundiza en esta función y analiza la huella de memoria para realizar tus cálculos utilizando listas:
- Carga el paquete
memory_profiler
en tu sesión IPython. - Importa
calc_bmi_lists
desdebmi_lists
. - Una vez que hayas completado los pasos anteriores, utiliza
%mprun
para perfilar la funcióncalc_bmi_lists()
que actúa sobre los datos de tus superhéroes. El arreglohts
y el arreglowts
ya se han cargado en tu sesión.
Cuando hayas terminado de codificar, responde a la siguiente pregunta:
¿Cuánta memoria consumen las líneas de código de comprensión de la lista en la función calc_bmi_lists()
? (es decir, ¿cuál es la suma total de la columna Increment
para estas cuatro líneas de código?)
Este ejercicio forma parte del curso
Escribir código Python eficiente
Ejercicio interactivo práctico
Pon en práctica la teoría con uno de nuestros ejercicios interactivos
