1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Psaní efektivního kódu v Pythonu

Connected

Cvičení

Použití %mprun: BMI hrdinů 2.0

Pojďme se podívat, jestli jiný přístup k výpočtu BMI dokáže ušetřit nějakou paměť. Jak si možná pamatuješ, výška a hmotnost každého hrdiny jsou uloženy v poli numpy. To znamená, že můžeš využít výhody indexování polí a broadcastingu v NumPy k provedení výpočtů. Funkce calc_bmi_arrays byla vytvořena a uložena do souboru bmi_arrays.py. Pro přehlednost je zobrazena níže:

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

Všimni si, že tato funkce provádí všechny potřebné výpočty pomocí polí.

Podívejme se, jestli tento aktualizovaný přístup s poli sníží nároky na paměť:

  • Načti balíček memory_profiler do své IPython session.
  • Importuj calc_bmi_arrays z modulu bmi_arrays.
  • Jakmile dokončíš výše uvedené kroky, použij %mprun k profilování funkce calc_bmi_arrays() na datech svých superhrdinů. Pole sample_indices, pole hts a pole wts jsou do session již načtena.

Až s kódováním skončíš, odpověz na následující otázku:

Kolik paměti spotřebují řádky kódu s indexováním polí a broadcastingem ve funkci calc_bmi_array()? (tj. jaký je celkový součet sloupce Increment pro tyto čtyři řádky kódu?)

Pokyny

50 XP

Možné odpovědi