scipy.linalg.normを使ってみる
L2ノルム
一番使うのはこれだと思う。いわゆるベクトルの大きさを計算できる。
通常、x,y平面におけるベクトルの大きさを計算するときは、を素直にコードに書くと思う。
VBAであれば=SQRT(SUMSQ(“セルの範囲”))
とかで計算するあれである。
scipy.linalg.norm
の引数ord=
を2にすればベクトルの大きさを返す。
from scipy.linalg import norm v = [1, 1] norm(v, ord=2) #1.4142135623730951 v = [1, 1, 1] norm(v, ord=2) #1.7320508075688772
第一引数を行列にした場合、axis=
に(0|1)を与え、ノルムを取る方向を指定する。pandas
とかと同じで行方向が0、列方向が1になっている。
v = np.random.randint(1,10, size=(10,3)) #array([[7, 6, 7], # [4, 3, 4], # [4, 7, 2], # [4, 3, 8], # [6, 7, 1], # [6, 5, 2], # [1, 3, 5], # [8, 3, 4], # [1, 1, 9], # [5, 7, 3]]) norm(v, ord=2, axis=0) #array([16.1245155 , 15.65247584, 16.40121947]) norm(v, ord=2, axis=1) #array([11.5758369 , 6.40312424, 8.30662386, 9.43398113, 9.2736185 , # 8.06225775, 5.91607978, 9.43398113, 9.11043358, 9.11043358])
...業務で使いそうなのはこれくらいだし、これ以上やることないな...