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
ノルムの次数(オーダー)を指定します。infはNumPyのinfオブジェクト(無限大)を表します。デフォルトはNoneです。
第3引数:axis
整数を指定した場合、ベクトルノルムを計算するxの軸を指定します。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, 3], [-1, 1, 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)
線形代数における行列またはベクトルのノルムを返すには、Python NumPyのLA.norm()メソッドを使用します。
print("\nResult...\n",LA.norm(arr))コード例全体
import numpy as np
from numpy import linalg as LA
# 配列を作成
arr = np.array([[ 1, 2, 3], [-1, 1, 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)
# 行列またはベクトルのノルムを返す
print("\nResult...\n",LA.norm(arr))
出力結果
Our Array...
[[ 1 2 3]
[-1 1 4]]
Dimensions of our Array...
2
Datatype of our Array object...
int64
Shape of our Array object...
(2, 3)
Result...
5.656854249492381
この例では、2×3の整数型配列に対してデフォルト設定(ord=None、axis=None)でノルムを計算しているため、フラット化された配列のフロベニウスノルム(2-ノルム)である約5.657が返されています。
-
Pythonでフロベニウスノルムを使って線形代数における行列の条件数を計算する方法
線形代数において行列の条件数(条件数)を計算するには、Pythonの numpy.linalg.cond() メソッドを使用します。このメソッドは、引数 p の値に応じて7種類の異なるノルムから選択して条件数を返すことができます。返される値は行列の条件数であり、無限大になる場合もあります。行列 x の条件数は、「x のノルム × x の逆行列のノルム」として定義されます。ここで使用するノルムは、一般的なL2ノルムのほか、さまざまな行列ノルムの中から選択できます。第1引数の x は、条件数を求めたい対象となる行列です。第2引数の p は、条件数の計算に使用するノルムの種類(次数)を指定します。パ
-
【Python入門】numpy.linalg.cholesky()でコレスキー分解を求める方法
線形代数におけるコレスキー分解(Cholesky decomposition)とは、エルミート行列かつ正定値である正方行列 a を、下三角行列 L とその共役転置 LH の積「L * LH」に分解する手法です。NumPyでは numpy.linalg.cholesky() メソッドを使うことで、この分解を簡単に求めることができます。numpy.linalg.cholesky()メソッドの概要numpy.linalg.cholesky() は、引数として渡された正方行列のコレスキー分解を計算し、下三角行列 L を返します。このメソッドには以下のような特徴があります。前提条件: 入力行列 a はエ