pythonのNumpy配列を使った数値演算,ベクトル長さ,内積,外積を算出する方法

Numpy

 Numpy配列の演算について同じ行列数同士や片方の配列数が少ないケースでの演算過程と結果や,配列でのベクトル長さや内積や外積を求める方法について解説をしております.

 スポンサーリンク

スポンサーリンク

四則演算

 Numpy配列について,数値と配列を演算する場合と複数の配列同士を演算するケースについて解説します.

数値と配列を演算する

・2行2列の配列を作成しに2を足します.

import numpy as np
a = np.array([[1, 2],
              [3, 4]])
print(a + 2)

[OUT]

[[3 4]
 [5 6]]

 配列の全要素に2が足されました.

数値と配列を演算するケースでは,数値は配列のすべての要素に対して演算します.

・引き算、掛け算、割り算も同じ原則で実施されます.

[IN]

import numpy as np
a = np.array([[1, 2],
              [3, 4]])
print("引き算(a - 2)")
print(a - 2)           
print("掛け算(a * 2)")
print(a * 2)         
print("割り算(a / 2)")
print(a / 2)

[OUT]

引き算(a - 2)
[[-1  0]
 [ 1  2]]
掛け算(a * 2)
[[2 4]
 [6 8]]
割り算(a / 2)
[[0.5 1. ]
 [1.5 2. ]]

 配列の全要素に対し2を使った演算ができました.

複数の配列同士を演算する

2行2列の配列を2つ作成し足し合わせてみます.

[IN]

import numpy as np
a = np.array([[1, 2],
              [3, 4]])
b = np.array([[5, 6],
              [7, 8]])
print(a+b)

[OUT]

[[ 6  8]
 [10 12]]

複数配列では,同じ配列位置の要素同士を演算します.
今回の配列同士の足し算は以下のようになります.

・引き算,掛け算,割り算も同様に演算が行われます.

[IN]

import numpy as np
a = np.array([[1, 2],
              [3, 4]])
b = np.array([[5, 6,
              [7, 8]])
print("引き算(a - b)")
print(a - b)           
print("掛け算(a * b)")
print(a * b)         
print("割り算(a / b)")
print(a / b)

[OUT]

引き算(a - b)
[[-4 -4]
 [-4 -4]]
掛け算(a * b)
[[ 5 12]
 [21 32]]
割り算(a / b)
[[0.2        0.33333333]
 [0.42857143 0.5       ]]

行と列の数が異なる配列同士の演算

行と列の数が異なる配列同士の演算では,足りない配列や行に自動的に値が割り当てられ演算することができます.このことをブロードキャストといいます.

・行が足りない場合の演算

2行3列の配列と3要素のみの配列を足してみます.これは片方の行数が足りない状態です.

a = np.array([[1, 2, 3],
              [4, 5, 6]])
b = np.array( [1, 2, 3])
print(a+b)

[OUT]

[[2 4 6]
 [5 7 9]]

足りない行に値が割り当てられました.割り当て方は以下の図を参考にしてください.

列が足りない場合の演算

配列の演算で片方の列数が足りない状態の演算をしてみます.

[IN]

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6]])
b = np.array([[2],
              [4]])
print(a+b)

[OUT]

[[ 3  4  5]
 [ 8  9 10]]

列についても,値が割り当てられまました.以下の図を参考にしてください.

配列のベクトル長さの計算

Numpyで配列のベクトル長さを求めるにはnumpy.linalg.norm()関数を使います.

・配列(3,4)のベクトル長さを求めてみます.

[IN]

import numpy as np
a = np.array([3,4])
print( np.linalg.norm(a) )#ベクトル長さを求める

[OUT]

5.0

ベクトルの長さを求めることができました.

配列の内積と外積を求める方法

Numpyには配列を使った内積や外積について,Numpy関数を使うことで簡単に実施することができます.

ベクトルの内積の定義

${\bf a} \cdot {\bf b} = |{\bf a}||{\bf b}| \cos \theta$

ベクトルの外積の定義

$\vec{a}$ と $\vec{b}$ の外積が $\vec{a}$ × $\vec{b}$ です.

・外積は$\vec{a}$と$\vec{b}$に垂直です.
・外積の大きさは $\vec{a}$ と $\vec{b}$ からなる平行四辺形の面積に等しい.
・外積は$\vec{a}$ から $\vec{b}$ 方向へ右ねじ方向に進む向きです.

・配列の内積と外積計算をする関数

関数効果
numpy.dot(a,b)配列aとbの内積を求めます.
numpy.cross(a,b)配列aとbの外積を求めます.

・ベクトル(3,4,0)と(-1,3,0)の内積と外積を求めます.

[IN]

import numpy as np
a = np.array([ 3, 4, 0])
b = np.array([-1, 3, 0])
print("内積", np.dot(a,b))   #配列aとbの内積
print("外積", np.cross(a,b)) #配列aとbの外積

[OUT]

内積 9
外積 [ 0  0 13]

ここまでに記事で配列の基礎的な演算やベクトルの内積や外積について理解が深まったのではないかと思います.

トップページへ戻る

 スポンサーリンク

コメント

タイトルとURLをコピーしました