Comece agoraComece grátis

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 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