Python
 Computer >> コンピューター >  >> プログラミング >> Python

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.] となります。

  1. 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ノルム

  2. 【Python入門】numpy.linalg.cholesky()でコレスキー分解を求める方法

    線形代数におけるコレスキー分解(Cholesky decomposition)とは、エルミート行列かつ正定値である正方行列 a を、下三角行列 L とその共役転置 LH の積「L * LH」に分解する手法です。NumPyでは numpy.linalg.cholesky() メソッドを使うことで、この分解を簡単に求めることができます。numpy.linalg.cholesky()メソッドの概要numpy.linalg.cholesky() は、引数として渡された正方行列のコレスキー分解を計算し、下三角行列 L を返します。このメソッドには以下のような特徴があります。前提条件: 入力行列 a はエ