1. Learn
  2. /
  3. Курси
  4. /
  5. Ефективне написання коду Python

Connected

вправа

Використання %mprun: Hero BMI 2.0

Подивімося, чи допоможе інший підхід до обчислення ІМТ зекономити пам'ять. Нагадаємо, зріст і вага кожного героя зберігаються в масивах numpy. Це означає, що ви можете скористатися зручним індексуванням масивів і broadcasting у NumPy, щоб виконати обчислення. Функцію calc_bmi_arrays створено та збережено у файлі bmi_arrays.py. Для зручності вона наведена нижче:

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

Зверніть увагу, що ця функція виконує всі необхідні обчислення за допомогою масивів.

Перевірмо, чи зменшує цей оновлений підхід із масивами споживання пам'яті:

  • Завантажте пакет memory_profiler у вашу сесію IPython.
  • Імпортуйте calc_bmi_arrays із bmi_arrays.
  • Після виконання наведених кроків скористайтеся %mprun, щоб профілювати функцію calc_bmi_arrays() на ваших даних про супергероїв. Масиви sample_indices, hts і wts вже завантажено у вашу сесію.

Після того як завершите кодування, дайте відповідь на запитання:

Скільки пам'яті споживають рядки коду з індексуванням масивів і broadcasting у функції calc_bmi_array()? (тобто яка загальна сума стовпця Increment для цих чотирьох рядків коду?)

Інструкції

50 XP

Можливі відповіді