single
Basic線形代数
メニューを表示するにはスワイプしてください
線形代数は、機械学習、ディープラーニング、データ分析など、さまざまな分野で重要な役割を果たす数学の基本分野。
ベクトルと行列
線形代数において、ベクトルは値の順序付き集合。1次元NumPy配列はベクトルを効率的に表現可能。行列は数値の2次元配列であり、NumPyの2次元配列で表現できる。
ベクトルと行列の加算・減算、スカラー倍については、**「基本的な数学演算」**の章ですでに学習済み。ここではその他の演算に注目。
転置
転置は、行列を対角線で反転させる操作。つまり、行列の行を列に、列を行に変換する。
NumPy 配列の .T 属性を使用して行列を転置可能:
12345import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
ドット積
ドット積は、機械学習やディープラーニングで最も一般的に使用される線形代数の演算です。2つのベクトル(要素数が等しい必要があります)のドット積は、それぞれの要素ごとの積の合計です。結果はスカラーとなります。
行列の積
行列の積は、最初の行列の列数が2番目の行列の行数と等しい場合にのみ定義されます。結果として得られる行列は、最初の行列と同じ行数、2番目の行列と同じ列数を持ちます。
ご覧のとおり、結果の行列の各要素は、2つのベクトルのドット積です。要素の行番号は最初の行列の行ベクトルの番号に対応し、列番号は2番目の行列の列ベクトルの番号に対応します。
最初の行列の列数は、2番目の行列の行数と等しくなければなりません。これは、ドット積を計算するためには2つのベクトルが同じ要素数である必要があるためです。
NumPyにおけるドット積と行列積
NumPy では、dot() 関数がドット積および行列積の両方に利用できます。この関数は2つの配列を引数として受け取ります。
また、2つの配列の間に @ 演算子 を使うことでも同じ結果を得ることができます。
12345678910111213import numpy as np vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Dot product using the dot() function print(np.dot(vector_1, vector_2)) # Dot product using the @ operator print(vector_1 @ vector_2) matrix_1 = np.array([[1, 2, 3], [4, 5, 6]]) matrix_2 = np.array([[7, 10], [8, 11], [9, 12]]) # Matrix multiplication using the dot() function print(np.dot(matrix_1, matrix_2)) # Matrix multiplication using the @ operator print(matrix_1 @ matrix_2)
行列積において右側の引数がベクトル(1次元配列)の場合、NumPy はそれを最後の次元が1の行列として扱います。6x4 行列に要素数 4 のベクトルを掛ける場合、そのベクトルは 4x1 行列として扱われます。
行列積において左側の引数がベクトルの場合、NumPy はそれを最初の次元が1の行列として扱います。要素数 4 のベクトルに 4x6 行列を掛ける場合、そのベクトルは 1x4 行列として扱われます。
下図は、課題で使用される exam_scores および coefficients 配列の構造を示しています。
スワイプしてコーディングを開始
各学生の最終スコアは、各科目のスコアに対応する係数を掛け、その結果を合計することで算出されます。ドット積はこれらの操作を一度に実行します。
exam_scores と coefficients のドット積を計算して、3人全員の最終スコアを求めてください。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください