1、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,求特征值,然后求最大特征值得算術平方根(matlab在線版,計算ans=ATA,[x,y]=eig(ans),sqrt(y),x是特征向量,y是特征值)
ord=∞:行和的最大值
ord=None:默認情況下,是求整體的矩陣元素平方和,再開根號
③axis:處理類型
axis=1表示按行向量處理,求多個行向量的范數
axis=0表示按列向量處理,求多個列向量的范數
axis=None表示矩陣范數。
④keepding:是否保持矩陣的二維特性
True表示保持矩陣的二維特性,False相反
x = np.array([[4, 4], [4, 4]]) print("默認參數(矩陣整體元素平方和開根號,不保留矩陣二維特性):%d" % np.linalg.norm(x)) print("矩陣整體元素平方和開根號,保留矩陣二維特性:%s" % np.linalg.norm(x, keepdims=True)) print("矩陣1范數:%s" % np.linalg.norm(x, ord=1, keepdims=True)) print("矩陣2范數:%s" % np.linalg.norm(x, ord=2, keepdims=True)) print("矩陣無窮大范數:%s" % np.linalg.norm(x, ord=np.inf, keepdims=True)) print("矩陣每個行向量求向量的1范數:%s" % np.linalg.norm(x, ord=1, axis=1, keepdims=True)) --------------------------結果---------------------------- 默認參數(矩陣整體元素平方和開根號,不保留矩陣二維特性):8 矩陣整體元素平方和開根號,保留矩陣二維特性:[[8.]] 矩陣1范數:[[8.]] 矩陣2范數:[[8.]] 矩陣無窮大范數:[[8.]] 矩陣每個行向量求向量的1范數:[[8.] [8.]]
2、
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) y = np.array([1, 0, 1]) z = np.array([[2, 1], [0, 3]]) print(np.dot(x, y)) print(x.T) print(np.dot(y, x.T)) print(np.trace(x)) # trace是求shape的對角線上的元素的和 print(np.linalg.det(z)) # 行列式 print(np.linalg.matrix_rank(z)) # 矩陣的秩 print(np.linalg.eig(z)) # 求本征值和本征向量 print(np.linalg.cholesky(z)) --------------------結果----------------------- [ 4 10 16] [[1 4 7] [2 5 8] [3 6 9]] [ 4 10 16] 15 6.0 2 (array([2., 3.]), array([[1. , 0.70710678], [0. , 0.70710678]])) [[1.41421356 0. ] [0. 1.73205081]]