Python NumPyのLA.norm()で行列・ベクトルのノルムを計算する方法(ord引数による次数指定)
線形代数において行列やベクトルのノルム(Norm)を求めるには、PythonのNumPyライブラリが提供する LA.norm() メソッドを使用します。このメソッドは、ノルムの種類(次数)を ord 引数で柔軟に指定できるのが特徴です。
LA.norm()メソッドの主なパラメータ
第1引数:x
入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneの場合を除く)。axisとordがどちらもNoneの場合は、x.ravel() の2-ノルムが返されます。
第2引数:ord
ノルムの次数(order)を指定します。inf を指定するとNumPyの inf オブジェクトとして扱われます。デフォルト値はNoneです。
第3引数:axis
整数を指定した場合、ベクトルノルムを計算する対象の軸を指定します。2要素のタプルを指定した場合は、2次元行列を保持する軸を示し、それらの行列に対して行列ノルムが計算されます。axisがNoneの場合、xが1次元ならベクトルノルム、2次元なら行列ノルムが返されます。デフォルト値はNoneです。
第4引数:keepdims
Trueに設定すると、ノルムを計算した軸がサイズ1の次元として結果に残ります。このオプションにより、元の配列xに対して正しくブロードキャストできるようになります。
実装手順
まず、必要なライブラリをインポートします。
import numpy as np from numpy import linalg as LA
次に、配列を作成します。
arr = np.array([[ 1, 2, 4], [-1, 2, 4]])
作成した配列を表示します。
print("Our Array...\n",arr)
配列の次元数を確認します。
print("\nDimensions of our Array...\n",arr.ndim)
データ型を確認します。
print("\nDatatype of our Array object...\n",arr.dtype)
配列の形状を確認します。
print("\nShape of our Array object...\n",arr.shape)
ここで、LA.norm() メソッドを使ってノルムを計算します。今回は ord=1(マンハッタンノルム)、axis=1(行方向)を指定しています。
print("\nResult...\n",LA.norm(arr, ord=1, axis=1))
完全なコード例
import numpy as np
from numpy import linalg as LA
# 配列を作成
arr = np.array([[ 1, 2, 4], [-1, 2, 4]])
# 配列を表示
print("Our Array...\n",arr)
# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)
# データ型を確認
print("\nDatatype of our Array object...\n",arr.dtype)
# 形状を確認
print("\nShape of our Array object...\n",arr.shape)
# LA.norm()メソッドでノルムを計算(ord=1、axis=1)
print("\nResult...\n",LA.norm(arr, ord=1, axis=1))
実行結果
Our Array...
[[ 1 2 4]
[-1 2 4]]
Dimensions of our Array...
2
Datatype of our Array object...
int64
Shape of our Array object...
(2, 3)
Result...
[7. 7.]
このように、ord=1かつaxis=1を指定すると、各行の要素の絶対値の合計(マンハッタンノルム)が計算されます。1行目は |1| + |2| + |4| = 7、2行目も |-1| + |2| + |4| = 7 となるため、結果は [7. 7.] となります。
-
Python NumPyのlinalg.norm()で行列・ベクトルのノルムを計算する方法
線形代数において行列またはベクトルのノルム(Norm)を返すには、Python NumPyのnumpy.linalg.norm()メソッドを使用します。この記事では、LA.norm()メソッドの基本的な使い方と各パラメータの意味を、実際のコード例とともにわかりやすく解説します。numpy.linalg.norm()メソッドのパラメータ第1引数:xノルムを計算する対象となる入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneの場合を除く)。axisとordがどちらもNoneの場合は、x.ravel()の2-ノルムが返されます。第2引数:ordノルム
-
【Python入門】numpy.linalg.cholesky()でコレスキー分解を求める方法
線形代数におけるコレスキー分解(Cholesky decomposition)とは、エルミート行列かつ正定値である正方行列 a を、下三角行列 L とその共役転置 LH の積「L * LH」に分解する手法です。NumPyでは numpy.linalg.cholesky() メソッドを使うことで、この分解を簡単に求めることができます。numpy.linalg.cholesky()メソッドの概要numpy.linalg.cholesky() は、引数として渡された正方行列のコレスキー分解を計算し、下三角行列 L を返します。このメソッドには以下のような特徴があります。前提条件: 入力行列 a はエ