Python NumPy numpy.linalg.norm() 関数
Minahil Noor
2023年1月30日
-
numpy.linalg.norm()
の構文 -
コード例:
numpy.linalg.norm()
) -
コード例:2 次元配列のノルムを求めるための
numpy.linalg.norm()
-
コード例:
axis
パラメーターを使用してベクトルノルムと行列ノルムを検索するためのnumpy.linalg.norm()
-
コード例:
ord
パラメーターを使用するためのnumpy.linalg.norm()
Python NumPy numpy.linalg.norm()
関数は行列ノルムまたはベクトルノルムの値を求めます。パラメータ ord
はこの関数が行列ノルムを求めるかベクトルノルムを求めるかを決定します。このパラメータにはいくつかの値が定義されています。
numpy.linalg.norm()
の構文
numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)
パラメータ
x |
配列のような構造になっています。これはノルムの値を求めるための入力配列です。パラメータ axis のデフォルト値は None であるので、配列は ord が None であれば一次元または二次元であるべきです。 |
ord |
関数の戻り値はこのパラメータに依存します。ノルムの次数を定義します。いくつかの値がありますので、こちらを参照してください。 |
axis |
これは整数、None 、または整数の 2つのタプル です。これが integer の場合、関数がベクトルノルムを求める軸を表します。デフォルト値は None であり、行列ノルムかベクトルノルムのどちらかを求めることを意味します。2 tuple の整数値の場合は行列ノルムの値を返します。 |
keepdims |
これはブール値のパラメータです。デフォルト値は False です。値が True の場合、ノルム軸の寸法を 1 に等しくして表示します。 |
戻り値
行列のノルムを float
値または N 次元配列の形で返します。
コード例:numpy.linalg.norm()
)
この関数を使って 1 次元配列のノルムを求めます。
from numpy import linalg as la
import numpy as np
x = np.array(
[89, 34, 56, 87, 90, 23, 45, 12, 65, 78, 9, 34, 12, 11, 2, 65, 78, 82, 28, 78]
)
norm = la.norm(x)
print("The value of norm is:")
print(norm)
出力:
The value of norm is:
257.4800963181426
norm の値である float
を返しました。
コード例:2 次元配列のノルムを求めるための numpy.linalg.norm()
これから 2 次元の配列を渡します。
from numpy import linalg as la
import numpy as np
x = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
norm = la.norm(x)
print("The value of norm is:")
print(norm)
出力:
The value of norm is:
129.35223229616102
パラメータ ord
に None
以外の値を設定し、1 次元でも 2 次元でもない配列を渡すと、この関数は axis
パラメータが None
であるため ValueError
を生成します。
from numpy import linalg as la
import numpy as np
x = np.array([[[4, 2], [6, 4]], [[5, 8], [7, 3]]])
norm = la.norm(x, "nuc")
print("The value of norm is:")
print(norm)
出力:
Traceback (most recent call last):
File "C:\Test\test.py", line 6, in <module>
norm = la.norm(x,'nuc')
File "<__array_function__ internals>", line 5, in norm
File "D:\WinPython\WPy64-3820\python-3.8.2.amd64\lib\site-packages\numpy\linalg\linalg.py", line 2557, in norm
raise ValueError("Improper number of dimensions to norm.")
ValueError: Improper number of dimensions to norm.
コード例:axis
パラメーターを使用してベクトルノルムと行列ノルムを検索するための numpy.linalg.norm()
最初にベクトルノルムを求めます。
from numpy import linalg as la
import numpy as np
x = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
norm = la.norm(x, axis=0)
print("The vector norm is:")
print(norm)
出力:
The vector norm is:
[41.78516483 80.95060222 91.83136719]
この関数は、計算されたベクトルノルムとして N 次元の配列を返していることに注意してください。
ここで、行列ノルムを求めます。パラメータ axis
には、整数値の 2- タプル
を渡します。
from numpy import linalg as la
import numpy as np
x = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
norm = la.norm(x, axis=(0, 1))
print("The value of matrix norm is:")
print(norm)
出力:
The value of matrix norm is:
129.35223229616102
コード例:ord
パラメーターを使用するための numpy.linalg.norm()
パラメータ ord
には複数の値があります。
from numpy import linalg as la
import numpy as np
x = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
norm = la.norm(x, "fro")
print("The value of matrix norm is:")
print(norm)
出力:
The value of matrix norm is:
129.35223229616102
この関数は Frobenius
の行列ノルムの値を生成しました。
from numpy import linalg as la
import numpy as np
x = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
norm = la.norm(x, "nuuc")
print("The value of matrix norm is:")
print(norm)
出力:
The value of matrix norm is:
152.28781231351272
この関数は行列ノルムを生成しました。これは特異値の和です。