クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

ベクトルの足し算と長さ

このレッスンのあとで: ベクトルを足し、何倍かにし、長さを求めることができる。

50分のレッスンコマンド3件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

ベクトルは数の並びである

ベクトルとは、順番に意味のある数を並べたものです。足す、何倍かにする、長さを測る、という3つの計算で、たくさんの数をまとめて扱えます。

貸し自転車の店の1日は、気温、雨量、貸出台数の3つの数で表せます。この3つの並びが、1つのベクトルです。

このレッスンのゴール

メモ

ベクトルを足し、何倍かにし、長さを求めることができる。

キーワード

ことばいみれい
ベクトル順番に意味のある数の並び[12, 0]
成分ベクトルに入っている1つ1つの数
スカラーベクトルに掛ける、ふつうの1つの数
長さ原点からベクトルの先までの距離。ノルムともいう
単位ベクトル長さが 1 のベクトル

学生が入力するセルは、このプレビューでは空白です。

足し算は同じ位置どうしで行う

ベクトルの足し算は、同じ位置の成分どうしを足します。スカラー倍は、すべての成分に同じ数を掛けます。

ベクトルの足し算を2で割ると、平均のベクトルが得られます。2日分の記録の「ふつうの日」を、1回の計算で出せます。

例: 2日の記録を計算する

計算手順結果
月曜気温 12、雨量 0[12, 0]
火曜気温 8、雨量 5[8, 5]
足し算[12 + 8, 0 + 5][20, 5]
3倍[3 × 12, 3 × 0][36, 0]
平均足し算を 2 で割る[10, 2.5]

学生が入力するセルは、このプレビューでは空白です。

ベクトルを足して、何倍かにする

コード: python
# 月曜と火曜の記録です。成分は、気温と雨量の順に並べます。
monday = [12, 0]
tuesday = [8, 5]

total = []
for i in range(len(monday)):
    total.append(monday[i] + tuesday[i])

print("2日の合計:", total)
tripled = []
for x in monday:
    tripled.append(3 * x)
print("3倍した月曜:", tripled)
# tuesday を [8, 5, 1] に変えると、結果はどうなりますか。

NumPy で同じ計算をする

コマンド
docker exec jupyter python3 -c "import numpy as np; a = np.array([12, 0]); b = np.array([8, 5]); print(a + b, 3 * a, (a + b) / 2)"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

1日の記録をベクトルとして見る

コマンド
docker exec jupyter python3 -c "import numpy as np; d = np.genfromtxt('hires.csv', delimiter=',', skip_header=1, usecols=(4, 5, 6)); print(d[0], d.shape)"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ベクトルの長さは2乗の和の平方根

ベクトルの長さは、原点から先までの距離です。成分を2乗して足し、平方根を取ります。

長さで割ると、向きは同じで長さが 1 のベクトルになります。これが単位ベクトルで、向きだけを取り出す方法です。

例: 3つのベクトルの長さ

ベクトル2乗の和長さ単位ベクトル
[3, 4]9 + 16 = 255[0.6, 0.8]
[6, 8]36 + 64 = 10010[0.6, 0.8]
[5, 12]25 + 144 = 16913[5/13, 12/13]
[1, 2, 2]1 + 4 + 4 = 93[1/3, 2/3, 2/3]

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

多くの人は、長さを成分の合計だと考えます。[3, 4] の合計は 7 ですが、長さは 5 です。長さは、必ず2乗して足してから平方根を取ります。

長さを計算する

コード: python
# 成分を2乗して足し、平方根を取ると、ベクトルの長さになります。
v = [6, 8]
squares = 0
for x in v:
    squares = squares + x * x

print("2乗の合計:", squares)
print("長さ:", squares ** 0.5)
# v を [5, 12] に変えて、長さを予想してから実行してください。

NumPy で長さを求める

コマンド
docker exec jupyter python3 -c "import numpy as np; print(np.linalg.norm(np.array([5, 12])), np.linalg.norm(np.array([1, 2, 2])))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

さらに挑戦: 単位が違う成分

1日のベクトル [気温, 雨量, 貸出台数] の長さを求めると、台数が大きいので、ほとんど台数だけで決まります。

気温と台数は単位が違うので、そのままの長さには意味がありません。どう直せばよいか、次のレッスンで考えるときの手がかりにしましょう。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。