ComeçarComece gratuitamente

Usando %mprun: Hero BMI 2.0

Vamos ver se o uso de uma abordagem diferente para calcular os IMCs pode economizar memória. Se você se lembra, a altura e o peso de cada herói são armazenados em uma matriz numpy. Isso significa que você pode usar os práticos recursos de indexação e transmissão de matriz do NumPy para realizar seus cálculos. Uma função chamada calc_bmi_arrays foi criada e salva em um arquivo intitulado bmi_arrays.py. Para sua conveniência, ele é exibido abaixo:

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

Observe que essa função realiza todos os cálculos necessários usando matrizes.

Vamos ver se essa abordagem de matriz atualizada diminui o espaço de memória que você ocupa:

  • Carregue o pacote memory_profiler em sua sessão do IPython.
  • Importe calc_bmi_arrays de bmi_arrays.
  • Depois que você concluir as etapas acima, use %mprun para criar o perfil da função calc_bmi_arrays() que atua nos dados dos super-heróis. A matriz sample_indices, a matriz hts e a matriz wts foram carregadas em sua sessão.

Depois que você terminar de codificar, responda à seguinte pergunta:

Quanta memória as linhas de código de indexação e transmissão de matriz consomem na função calc_bmi_array()? (Ou seja, qual é a soma total da coluna Increment para essas quatro linhas de código?)

Este exercício faz parte do curso

Como escrever um código Python eficiente

Ver Curso

Exercício interativo prático

Transforme a teoria em ação com um de nossos exercícios interativos

Comece o exercício