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

Python NumPyで行列の核ノルム(Nuclear Norm)を計算する方法

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

第1引数「x」は入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneでない場合を除く)。axisとordの両方がNoneの場合は、x.ravel()の2ノルムが返されます。

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

実行手順

1. 必要なライブラリをインポートする

import numpy as np
from numpy import linalg as LA

2. 配列を作成する

arr = np.array([[ -4, -3, -2], [-1, 0, 1], [2, 3, 4] ])

3. 配列を表示する

print("Our Array...\n",arr)

4. 次元数を確認する

print("\nDimensions of our Array...\n",arr.ndim)

5. データ型を確認する

print("\nDatatype of our Array object...\n",arr.dtype)

6. 形状を確認する

print("\nShape of our Array object...\n",arr.shape)

7. LA.norm()メソッドで核ノルムを計算する

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

サンプルコード全体

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, 'nuc'))

実行結果

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...
9.797958971132713

このように、LA.norm()メソッドに「nuc」を指定するだけで、行列の核ノルム(特異値の合計)を簡単に求めることができます。核ノルムは機械学習や画像処理の分野、特に低ランク近似などの問題でよく利用される重要な指標です。

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