np.linalg.norm()是NumPy中用于计算向量或矩阵的范数的函数。它可以计算不同类型的范数,包括向量的L1范数、L2范数以及矩阵的Frobenius范数等。
基本用法如下,
numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)
- x:输入数组,可以是向量或矩阵
- ord:指定范数类型。常见的取值包括:
1、None(默认):计算向量的L2范数或矩阵的Frobenius范数
2、'fro':计算矩阵的Frobenius范数
3、1:计算向量的L1范数或矩阵的列和范数(取列和的最大值)
4、2:计算向量的L2范数或矩阵的谱范数
5、np.inf:计算向量的L∞范数(取最大值)或矩阵的行和范数(取行和的最大值)
- axis:指定沿哪个轴计算范数。如果axis是一个整数,则计算沿该轴的范数。如果axis是一个元组,则计算跨指定轴的范数
- keepdims:如果为True,则保持原数组的维度
以下是简单的代码示例,
import numpy as np
# 示例向量
v = np.array([1, 2, 3])
# 计算向量的 L2 范数(默认)
l2_norm = np.linalg.norm(v)
print("L2 norm of v:", l2_norm)
# 计算向量的 L1 范数
l1_norm = np.linalg.norm(v, ord=1)
print("L1 norm of v:", l1_norm)
# 计算向量的 L∞ 范数
inf_norm = np.linalg.norm(v, ord=np.inf)
print("L∞ norm of v:", inf_norm)
# 示例矩阵
M = np.array([[1, 2, 3],
[4, 5, 6]])
# 计算矩阵的 Frobenius 范数(默认)
fro_norm = np.linalg.norm(M)
print("Frobenius norm of M:", fro_norm)
# 计算矩阵的 L1 范数(列和范数)
l1_matrix_norm = np.linalg.norm(M, ord=1)
print("L1 norm of M:", l1_matrix_norm)
# 计算矩阵的 L∞ 范数(行和范数)
inf_matrix_norm = np.linalg.norm(M, ord=np.inf)
print("L∞ norm of M:", inf_matrix_norm)
输出结果如下,
L2 norm of v: 3.7416573867739413
L1 norm of v: 6.0
L∞ norm of v: 3.0
Frobenius norm of M: 9.539392014169456
L1 norm of M: 9.0
L∞ norm of M: 15.0