numpy.linalg.norm---求范数

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

2、函数参数

x_norm=np.linalg.norm(x,ord=None,axis=None,keepdims=False)
  • x , 表示矩阵(也可以是一维)
  • ord ,范数类型(向量范数/矩阵范数)

向量的范数:

numpy.linalg.norm---求范数_第1张图片

矩阵的范数:

ord=1:列求和的最大值

ord=2 : |\lambdaE-ATA|=0,求特征值,然后求最大特征值得算术平方根

ord=∞:行和的最大值

  • axis ,处理类型

axis=1 :按行向量处理,求多个行向量的范数

axis=0:按列向量处理,求多个列向量的范数

axis=None:表示矩阵范数

  • keeping:是否保持矩阵的二维特性

True 表示保持矩阵的二维特性,False相反

示例:

# -*- coding: utf-8 -*-
#@Time    :2019/9/20 11:46
#@Author  :XiaoMa
import numpy as np

# print(np.random.randn(2,3))

x = np.array([
    [0, 3, 4],
    [1, 6, 4]])
# 默认参数ord=None,axis=None,keepdims=False
print("默认参数(矩阵2范数,不保留矩阵二维特性):", np.linalg.norm(x))
print("矩阵2范数,保留矩阵二维特性:", np.linalg.norm(x, keepdims=True))

print("矩阵每个行向量求向量的2范数:", np.linalg.norm(x, axis=1, keepdims=True))
print("矩阵每个列向量求向量的2范数:", np.linalg.norm(x, axis=0, keepdims=True))

print("矩阵1范数:", np.linalg.norm(x, ord=1, keepdims=True))
print("矩阵2范数:", np.linalg.norm(x, ord=2, keepdims=True))
print("矩阵∞范数:", np.linalg.norm(x, ord=np.inf, keepdims=True))

print("矩阵每个行向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=1, keepdims=True))

#输出:
D:\anaconda3\envs\tensorflow2.0_env\python.exe D:/Recommend_MovieLens/LFM/test.py

默认参数(矩阵2范数,不保留矩阵二维特性): 8.831760866327848
矩阵2范数,保留矩阵二维特性: [[8.83176087]]
矩阵每个行向量求向量的2范数: [[5.        ]
 [7.28010989]]
矩阵每个列向量求向量的2范数: [[1.         6.70820393 5.65685425]]
矩阵1范数: [[9.]]
矩阵2范数: [[8.70457079]]
矩阵∞范数: [[11.]]
矩阵每个行向量求向量的1范数: [[ 7.]
 [11.]]

 

 

 

你可能感兴趣的:(numpy)