NumPy 数学ゲーム

PythonBeginner

はじめに

このチャレンジでは、Python の NumPy モジュールを使用する練習を行います。基本的な数学演算や配列操作をカバーする、NumPy 配列を操作するためのいくつかの一般的な関数を実装します。必要なファイルは、左側のファイルエクスプローラーにあらかじめ用意されています。

これは「チャレンジ」です。ガイド付きの実験(Lab)とは異なり、ステップごとの指示に従うのではなく、学んだことを活かして独立して課題を完了させる必要があります。チャレンジは通常、少し難易度が高く設定されています。もし難しいと感じた場合は、Labby に相談するか、解答(Solution)を確認してください。過去のデータによると、これは難易度が 上級 レベルのチャレンジで、合格率は 50% です。学習者からは 97% の高い評価を得ています。

要素ごとの乗算

最初のタスクは、2 つの NumPy 配列を要素ごとに乗算(アダマール積)する関数を作成することです。これは、最初の配列の各要素を、2 番目の配列の対応する要素と掛け合わせることを意味します。

TODO

  • multiply_arrays.py ファイル内の multiply_arrays 関数を完成させてください。

要件

  • 関数名は multiply_arrays としてください。
  • 入力として 2 つの NumPy 配列 ab を受け取る必要があります。
  • ab を要素ごとに乗算した結果である、新しい NumPy 配列を返す必要があります。
  • 入力される配列は同じ形状(shape)を持ちます。

関数を実装した後、スクリプトを実行して結果を確認してください:

python3 multiply_arrays.py

出力:

Input a: [1 2 3]
Input b: [4 5 6]
Element-wise multiplication result: [4 10 18]
Expected: [4 10 18]
✨ 解答を確認して練習

行列の積

次に、行列の積(行列乗算)を実装します。要素ごとの乗算とは異なり、行列の積は線形代数の特定の規則に従い、2 つの行列の内側の次元が一致している必要があります。

TODO

  • matrix_multiply.py ファイル内の matrix_multiply 関数を完成させてください。

要件

  • 関数名は matrix_multiply としてください。
  • 入力として 2 つの NumPy 配列 ab を受け取る必要があります。
  • ab の行列積の結果である、新しい NumPy 配列を返す必要があります。
  • 入力される配列は、行列乗算が可能な形状を持っています。

関数を実装した後、スクリプトを実行して結果を確認してください:

python3 matrix_multiply.py

出力:

Input matrix a:
[[1 2]
 [3 4]]
Input matrix b:
[[5 6]
 [7 8]]
Matrix multiplication result:
[[19 22]
 [43 50]]
Expected:
[[19 22]
 [43 50]]
✨ 解答を確認して練習

配列の転置

このステップでは、NumPy 配列を転置(Transpose)する関数を作成します。配列を転置すると、その行と列が入れ替わります。

TODO

  • transpose_array.py ファイル内の transpose_array 関数を完成させてください。

要件

  • 関数名は transpose_array としてください。
  • 入力として 1 つの NumPy 配列 a を受け取る必要があります。
  • 入力配列を転置したものを返す必要があります。

関数を実装した後、スクリプトを実行して結果を確認してください:

python3 transpose_array.py

出力:

Original array:
[[1 2 3]
 [4 5 6]]
Transposed array:
[[1 4]
 [2 5]
 [3 6]]
Expected:
[[1 4]
 [2 5]
 [3 6]]
✨ 解答を確認して練習

配列の形状変更

次に、NumPy 配列の形状を変更(Reshape)する関数を作成します。形状変更は、データを変更することなく配列の次元を変更します。要素の総数は同じである必要があります。

TODO

  • reshape_array.py ファイル内の reshape_array 関数を完成させてください。

要件

  • 関数名は reshape_array としてください。
  • 入力として NumPy 配列 a とタプル shape を受け取る必要があります。
  • a のデータを保持しつつ、shape で指定された新しい次元を持つ新しい配列を返す必要があります。

関数を実装した後、スクリプトを実行して結果を確認してください:

python3 reshape_array.py

出力:

Original array: [1 2 3 4 5 6]
New shape: (2, 3)
Reshaped array:
[[1 2 3]
 [4 5 6]]
Expected:
[[1 2 3]
 [4 5 6]]
✨ 解答を確認して練習

ユークリッド距離の計算

ユークリッド距離は、2 点間の直線距離を測定する一般的な方法です。ここでのタスクは、2 つの 1 次元 NumPy 配列間のこの距離を計算する関数を実装することです。

2 つのベクトル ab の間のユークリッド距離の公式は以下の通りです:

d(a, b) = \sqrt{\sum\_{i=1}^{n}(a_i - b_i)^2}

TODO

  • euclidean_distance.py ファイル内の euclidean_distance 関数を完成させてください。

要件

  • 関数名は euclidean_distance としてください。
  • 同じ長さの 2 つの 1 次元 NumPy 配列 ab を受け取る必要があります。
  • それらの間のユークリッド距離を表す単一の浮動小数点数を返す必要があります。

関数を実装した後、スクリプトを実行して結果を確認してください:

python3 euclidean_distance.py

出力:

Point a: [1 2 3]
Point b: [4 5 6]
Euclidean distance: 5.196152422706632
Expected: 5.196152422706632
✨ 解答を確認して練習

まとめ

このチャレンジでは、NumPy の基本的な操作を練習しました。要素ごとの乗算、行列の積、配列の転置、形状変更、およびユークリッド距離の計算を行う関数を実装しました。これらのスキルは、Python を使用したデータ分析、機械学習、および科学計算において不可欠なものです。