ComeçarComece gratuitamente

Usando %mprun: Herói BMI

Você gostaria de calcular o índice de massa corporal (BMI) para uma amostra selecionada de heróis. BMI pode ser calculado usando a fórmula abaixo:

BMI = massa (kg) / altura (m)^2

Uma amostra aleatória de 25.000 super-heróis foi carregada em sua sessão como uma matriz chamada sample_indices. Essa amostra é uma lista de índices que corresponde ao índice de cada super-herói selecionado na lista heroes.

Uma função chamada calc_bmi_lists também foi criada e salva em um arquivo intitulado bmi_lists.py. Para sua conveniência, ele é exibido abaixo:

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

Observe que essa função executa todos os cálculos necessários usando a compreensão de lista (daí o nome calc_bmi_lists()). Aprofunde-se nessa função e analise o espaço de memória para realizar seus cálculos usando listas:

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

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

Quanta memória as linhas de código de compreensão da lista consomem na função calc_bmi_lists()? (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