ComenzarEmpieza gratis

Utilizando %mprun: Hero BMI 2.0

Veamos si utilizando un enfoque diferente para calcular los IMC podemos ahorrar algo de memoria. Si recuerdas, la altura y el peso de cada héroe se almacenan en un arreglo numpy. Esto significa que puedes utilizar las prácticas funciones de indexación de arreglos y difusión de NumPy para realizar tus cálculos. Se ha creado una función llamada calc_bmi_arrays y se ha guardado en un archivo llamado bmi_arrays.py. Para mayor comodidad, se muestra a continuación:

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

Observa que esta función realiza todos los cálculos necesarios utilizando arreglos.

Veamos si este enfoque de arreglo actualizado disminuye tu huella de memoria:

  • Carga el paquete memory_profiler en tu sesión IPython.
  • Importa calc_bmi_arrays desde bmi_arrays.
  • Una vez que hayas completado los pasos anteriores, utiliza %mprun para perfilar la función calc_bmi_arrays() que actúa sobre los datos de tus superhéroes. Se han cargado en tu sesión los arreglos sample_indices, hts y wts.

Cuando hayas terminado de codificar, responde a la siguiente pregunta:

¿Cuánta memoria consumen las líneas de código de indexación y emisión de arreglos en la función calc_bmi_array()? (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

Ver curso

Ejercicio interactivo práctico

Pon en práctica la teoría con uno de nuestros ejercicios interactivos

Empieza el ejercicio