始める無料で始める

ループを使わずに求めるポケモンの合計値と平均値

720匹のポケモンのリストが names として読み込まれています。各ポケモンに対応する統計量は NumPy 配列 stats として読み込まれています。stats の各行は names の各ポケモンに対応し、各列はそれぞれ個別のステータス(HPAttackDefenseSpecial AttackSpecial DefenseSpeed)を表します。

最強のポケモンを見つけるために、各ポケモンの総合値(stats の各行の合計)と平均値(stats の各行の平均)を集計したいとします。

以下は、これらの値を集めるために書かれた for ループです。

poke_list = []

for pokemon,row in zip(names, stats):
    total_stats = np.sum(row)
    avg_stats = np.mean(row)
    poke_list.append((pokemon, total_stats, avg_stats))

この演習はコースの一部です

効率的なPythonコードの書き方

コースを見る

演習の手順

  • 上の for ループを NumPy を使って置き換えてください。
    • .sum() メソッドで正しい軸を指定して、合計の配列(total_stats_np)を作成します。
    • .mean() メソッドで正しい軸を指定して、平均の配列(avg_stats_np)を作成します。
    • names リスト、total_stats_np 配列、avg_stats_np 配列を結合して、最終的な出力リスト(poke_list_np)を作成します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create a total stats array
total_stats_np = ____.____(axis=____)

# Create an average stats array
avg_stats_np = ____

# Combine names, total_stats_np, and avg_stats_np into a list
poke_list_np = [*____(names, total_stats_np, avg_stats_np)]

print(poke_list_np == poke_list, '\n')
print(poke_list_np[:3])
print(poke_list[:3], '\n')
top_3 = sorted(poke_list_np, key=lambda x: x[1], reverse=True)[:3]
print('3 strongest Pokémon:\n{}'.format(top_3))
コードを編集して実行