在python Numpy中求向量和矩陣的範數例項
np.linalg.norm(求範數):linalg=linear(線性)+algebra(代數),norm則表示範數。
函式引數
x_norm=np.linalg.norm(x,ord=None,axis=None,keepdims=False)
①x: 表示矩陣(也可以是一維)
②ord:範數型別
向量的範數:
矩陣的範數:
ord=1:列和的最大值
ord=2:|λE-ATA|=0,求特徵值,然後求最大特徵值得算術平方根
ord=∞:行和的最大值
③axis:處理型別
axis=1表示按行向量處理,求多個行向量的範數
axis=0表示按列向量處理,求多個列向量的範數
axis=None表示矩陣範數。
④keepding:是否保持矩陣的二維特性
True表示保持矩陣的二維特性,False相反
向量範數:
1-範數: ,即向量元素絕對值之和,matlab呼叫函式norm(x,1) 。
2-範數: ,Euclid範數(歐幾里得範數,常用計算向量長度),即向量元素絕對值的平方和再開方,matlab呼叫函式norm(x,2)。
∞-範數: ,即所有向量元素絕對值中的最大值,matlab呼叫函式norm(x,inf)。
-∞-範數: ,即所有向量元素絕對值中的最小值,matlab呼叫函式norm(x,-inf)。
p-範數: ,即向量元素絕對值的p次方和的1/p次冪,matlab呼叫函式norm(x,p)。
矩陣範數:
1-範數: , 列和範數,即所有矩陣列向量絕對值之和的最大值,matlab呼叫函式norm(A,1)。
2-範數: ,譜範數,即A'A矩陣的最大特徵值的開平方。matlab呼叫函式norm(x,2)。
∞-範數: ,行和範數,即所有矩陣行向量絕對值之和的最大值,matlab呼叫函式norm(A,inf)。
F-範數: ,Frobenius範數,即矩陣元素絕對值的平方和再開平方,matlab呼叫函式norm(A,'fro‘)。
import numpy as np x1=np.array([1,5,6,3,-1]) x2=np.arange(12).reshape(3,4) print x1,'\n',x2 print '向量2範數:' print np.linalg.norm(x1) print np.linalg.norm(x1,ord=2) print '預設的矩陣範數:' print np.linalg.norm(x2) print '矩陣2範數:' print np.linalg.norm(x2,ord=2)
經測試知:
np.linalg.norm(X),X為向量時,預設求向量2範數,即求向量元素絕對值的平方和再開方;
X為矩陣是,預設求的是F範數。矩陣的F範數即:矩陣的各個元素平方之和再開平方根,它通常也叫做矩陣的L2範數,它的有點在它是一個凸函式,可以求導求解,易於計算。
以上這篇在python Numpy中求向量和矩陣的範數例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。