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

【Python】NumPyのLA.norm()で行列のフロベニウスノルムを計算する方法

PythonのNumPyを使って、線形代数における行列やベクトルのノルムを求めるには、numpy.linalgモジュールのnorm()メソッド(LA.norm())を使用します。

第1引数のxには入力配列を指定します。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneの場合を除く)。また、axisordがどちらもNoneの場合は、x.ravel()の2-ノルムが返されます。

第2引数のordはノルムの次数(オーダー)を指定します。infはNumPyのinfオブジェクトを表し、デフォルト値はNoneです。パラメータとして「fro」を設定すると、フロベニウスノルムが計算されます。なお、フロベニウスノルムと核ノルム(nuclear norm)は、行列に対してのみ定義されている点に注意してください。

フロベニウスノルムとは

フロベニウスノルムは、行列の全要素の二乗和の平方根として定義されるノルムです。ベクトルのユークリッドノルム(L2ノルム)を行列に拡張した概念であり、機械学習や数値解析などの分野で広く活用されています。

実行手順

まず、必要なライブラリをインポートします。

import numpy as np
from numpy import linalg as LA

次に、配列を作成します。

arr = np.array([[ -4, -3, -2], [-1, 0, 1], [2, 3, 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()メソッドを使って行列のノルムを返します。

print("\nResult...\n",LA.norm(arr, 'fro'))

サンプルコード全体

import numpy as np
from numpy import linalg as LA

# 配列を作成
arr = np.array([[ -4, -3, -2], [-1, 0, 1], [2, 3, 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()メソッドでフロベニウスノルムを計算
print("\nResult...\n",LA.norm(arr, 'fro'))

実行結果

Our Array...
    [[-4 -3 -2]
    [-1 0 1]
    [ 2 3 4]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

Shape of our Array object...
(3, 3)

Result...
7.745966692414834

このように、3×3の行列に対して「fro」を指定してLA.norm()を実行すると、全要素の二乗和の平方根である7.745966692414834がフロベニウスノルムとして返されます。

  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 はエ