np.linalg.norm 求范数

linalg的解释

linalg=linear(线性)+algebra(代数),norm则表示范数。

 

函数的参数

1. numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)

x: 输入的array-like

ord: 范数类型

axis: 默认是None

keepdims: 返回值是否保持原先的维度

2. 当x是1D的向量时

 默认是求2范数,示例代码如下:

>>> a = np.array([3,4])
>>> a
array([3, 4])
>>> np.linalg.norm(a)
5.0
>>> np.linalg.norm(a, ord=1)
7.0
>>> np.linalg.norm(a, ord=np.inf)
4.0

3. 当x是2D的矩阵时

ord = 1  ------> 列和范数,即求列向量的绝对值之和的最大值,公式为 

ord = 2 ------> 求A'A的最大特征值的平方根,公式为

ord = inf -----> 行和范数,即求行向量的绝对值之和的最大值,公式为 

axis = 0,表示按照列求向量的范数;

axis = 1,表示按照行求向量的范数;

keepdims = True,表示保持原先的维度;

keepdims = False,表示不保持原先的维度;

默认是求2范数,示例代码如下:

>>> b = np.array([[0,3,4],[1,6,4]])
>>> b
array([[0, 3, 4],
       [1, 6, 4]])
>>> np.linalg.norm(b) # 默认求2范数
8.831760866327848
>>> np.linalg.norm(b, keepdims=True) # 默认求2范数,保留原先的维度
array([[8.83176087]])
>>> np.linalg.norm(b, axis=0) # 按照列对向量求2范数
array([1.        , 6.70820393, 5.65685425])
>>> np.linalg.norm(b, axis=0, keepdims=True) # 按照列对向量求2范数,保留原先的维度
array([[1.        , 6.70820393, 5.65685425]])
>>> np.linalg.norm(b, axis=1) # 按照行对向量求2范数
array([5.        , 7.28010989])
>>> np.linalg.norm(b, axis=1, keepdims=True) # 按照行对向量求2范数,保留原先的维度
array([[5.        ],
       [7.28010989]])

参考:

1. https://blog.csdn.net/hqh131360239/article/details/79061535

2. https://blog.csdn.net/left_la/article/details/9159949

你可能感兴趣的:(Numpy,numpy,linalg)