1. เรียนรู้
  2. /
  3. Courses
  4. /
  5. 効率的なPythonコードの書き方

Connected

Exercises

Using %mprun: Hero BMI 2.0

別の方法でBMIを計算すると、メモリ使用量を節約できるか試してみましょう。覚えているとおり、各ヒーローの身長と体重は numpy 配列に保存されています。つまり、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セッションに読み込みます。
  • bmi_arrays から calc_bmi_arrays をインポートします。
  • 上記を終えたら、%mprun を使って、あなたのスーパーヒーローデータに対して動作する calc_bmi_arrays() 関数をプロファイルします。 sample_indices 配列、hts 配列、wts 配列はすでにセッションに読み込まれています。

コーディングが終わったら、次の質問に答えてください。

calc_bmi_array() 関数における配列インデックスとブロードキャストの各行は、どれだけのメモリを消費しますか?(つまり、これら4行について Increment 列を合計した総量はいくつですか?)

คำแนะนำ

50 XP

คำตอบที่เป็นไปได้