`np.linalg.norm` 是 NumPy 库中的一个函数,用于计算向量或矩阵的范数(norm)。范数是一个衡量向量大小或矩阵“能量”的量度。在机器学习和科学计算中,计算范数是很常见的操作。
该函数有几种使用方式,主要取决于你传递给它的参数类型。以下是一些常见的使用场景:
### 对于向量(一维数组)
计算向量的欧几里得范数(也称为L2范数):
```python
import numpy as np
v = np.array([1, 2, 3]) # 一个向量
norm_v = np.linalg.norm(v) # 计算向量的欧几里得范数
```
### 对于矩阵(二维数组)
计算矩阵的Frobenius范数(也是L2范数):这是矩阵所有元素的平方和的平方根。这对于评估矩阵的“大小”很有用。例如:
```python
A = np.array([[1, 2], [3, 4]]) # 一个矩阵
frobenius_norm_A = np.linalg.norm(A) # 计算矩阵的Frobenius范数(L2范数)
```
### 指定不同的范数类型
除了默认的欧几里得和Frobenius范数外,你还可以指定其他类型的范数。例如,你可以计算L1范数(所有元素的绝对值之和)或无穷大范数(所有行上元素绝对值的最大值)。为此,你可以使用 `ord` 参数来指定范数的类型:
```python
# 计算向量的L1范数(所有元素的绝对值之和)
l1_norm_v = np.linalg.norm(v, ord=1) # v是一个向量
# 计算矩阵的最大列和的绝对值的最大值(无穷大范数)或者说谱范数(最大特征值的绝对值)
max_col_norm_A = np.linalg.norm(A, ord=np.inf) # A是一个矩阵
```
总之,`np.linalg.norm` 是一个强大的函数,可以方便地计算向量和矩阵的多种不同类型的范数。它在许多科学计算和机器学习应用中都非常有用。