📅  最后修改于: 2023-12-03 15:36:32.463000             🧑  作者: Mango
在科学计算中,计算矩阵或向量范数是一项重要的任务。范数可以衡量矩阵或向量的大小、长度或称为模。在 NumPy 中,我们可以轻松地计算不同类型的范数。以下是一些示例。
L2 范数也称为欧几里得范数,用于计算向量的长度。对于向量 $\textbf{x}$,其 L2 范数计算如下:
$$|\textbf{x}|2 = \sqrt{\sum{i=1}^n x_i^2}$$
对于矩阵 $\textbf{A}$,其 Frobenius 范数(又称为 L2 范数)计算如下:
$$|\textbf{A}|F = \sqrt{\sum{i=1}^m\sum_{j=1}^n a_{ij}^2}$$
用 NumPy 计算向量的 L2 范数:
import numpy as np
x = np.array([1, 2, 3, 4, 5])
l2_norm = np.linalg.norm(x)
print(l2_norm) # 输出结果为 7.416198487095663
用 NumPy 计算矩阵的 L2 范数:
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
l2_norm = np.linalg.norm(A)
print(l2_norm) # 输出结果为 9.539392014169456
L1 范数用于衡量向量的绝对值之和。对于向量 $\textbf{x}$,其 L1 范数计算如下:
$$|\textbf{x}|1 = \sum{i=1}^n |x_i|$$
用 NumPy 计算向量的 L1 范数:
import numpy as np
x = np.array([1, -2, 3, -4, 5])
l1_norm = np.linalg.norm(x, ord=1)
print(l1_norm) # 输出结果为 15.0
无线范数用于衡量向量的最大绝对值。对于向量 $\textbf{x}$,其无线范数计算如下:
$$|\textbf{x}|{\infty} = \max{i=1,2,\dots,n} |x_i|$$
用 NumPy 计算向量的无线范数:
import numpy as np
x = np.array([1, -2, 3, -4, 5])
inf_norm = np.linalg.norm(x, ord=np.inf)
print(inf_norm) # 输出结果为 5.0
Lp 范数用于衡量向量的绝对值各次方和的 p 次方根。对于向量 $\textbf{x}$,其 Lp 范数计算如下:
$$|\textbf{x}|{p} = (\sum{i=1}^n |x_i|^p)^{\frac{1}{p}}$$
用 NumPy 计算向量的 Lp 范数:
import numpy as np
x = np.array([1, -2, 3, -4, 5])
p_norm = np.linalg.norm(x, ord=3)
print(p_norm) # 输出结果为 4.308869380063775
总之,NumPy 提供了一个方便的函数来计算不同类型的矩阵或向量范数。同时,它还可以计算其他许多矩阵或向量操作。