Comece agoraComece grátis

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 exercicio faz parte do curso

Escrevendo código Python eficiente

Ver curso

exercicio interativo prático

Transforme teoria em prática com um dos nossos exercicio interativos

Iniciar exercicio