Python中的numpy矩阵运算
生活随笔
收集整理的這篇文章主要介紹了
Python中的numpy矩阵运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
numpy中matrix 和 array的區別
Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含于Array。所以matrix 擁有array的所有特性。
在numpy中matrix的主要優勢是:
(1)相對簡單的乘法運算符號。
例如,a和b是兩個matrices,那么a*b,就是矩陣積。
(2)matrix 和 array 都可以通過objects后面加.T 得到其轉置。但是 matrix objects 還可以在后面加 .H得到共軛矩陣, 加 .I 得到逆矩陣。相反的是在numpy里面arrays遵從逐個元素的運算,所以array:c 和d的c?d運算相當于對應的元素相乘
>>> c=np.array([[4, 3], [2, 1]]) >>> d=np.array([[1, 2], [3, 4]]) >>> c*d array([[4, 6],[6, 4]])(3) ?? 運算符的作用也不一樣 :
>>> a**2 matrix([[22, 15],[10, 7]]) >>> c**2 array([[16, 9],[ 4, 1]])因為a是個matrix,所以a??2返回的是a?a,相當于矩陣相乘。而c是array,c??2相當于,c中的元素逐個求平方。
(3)numpy中矩陣間的除法運算
>>> a/2 matrix([[2, 1],[1, 0]]) >>> a/b matrix([[4, 1],[0, 0]])取得是整數
基本運算
import numpy as np a = np.mat([[-1,2],[2,3]]) b = np.mat([[3,4],[4,5]]) print 'a:\n',a print 'b:\n',b print '\n a transpose:\n',a.T #轉置 print '\n a inv:\n',np.linalg.inv(a) # 求逆 print "\n a-b: \n",a-b # a - b,矩陣相減 print "\n a dot b: \n",a*b #2x2矩陣,矩陣相乘 print "\n a/b \n:",b/a # numpy中的除是對矩陣元素展開計算 print "\n a trace:\n",np.trace(a) #求跡 eigval,eigvec = np.linalg.eig(a) #特征,特征向量 print "\n a eig value:\n",eigval print'\n a eig vector:\n',eigveca = np.zeros([4,5]) print '\n all zero \n',a a = np.ones([7,6]) print '\n all one \n',a a = np.eye(4,7) print '\n 4x7 diagonal \n',a a = np.diag(range(5)) print '\n 5x5 diagonal \n',a a = np.empty((2,3)) print '\n empty \n',a結果:
a: [[-1 2][ 2 3]] b: [[3 4][4 5]]a transpose: [[-1 2][ 2 3]]a inv: [[-0.42857143 0.28571429][ 0.28571429 0.14285714]]a-b: [[-4 -2][-2 -2]]a dot b: [[ 5 6][18 23]]a/b : [[-3 2][ 2 1]]a trace: 2a eig value: [-1.82842712 3.82842712]a eig vector: [[-0.92387953 -0.38268343][ 0.38268343 -0.92387953]]all zero [[ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.]]all one [[ 1. 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1. 1.]..., [ 1. 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1. 1.]]4x7 diagonal [[ 1. 0. 0. ..., 0. 0. 0.][ 0. 1. 0. ..., 0. 0. 0.][ 0. 0. 1. ..., 0. 0. 0.][ 0. 0. 0. ..., 0. 0. 0.]]5x5 diagonal [[0 0 0 0 0][0 1 0 0 0][0 0 2 0 0][0 0 0 3 0][0 0 0 0 4]]empty [[ 1. 0. 0.][ 0. 0. 0.]]注意矩陣除法運算的結果
print "\n a/b \n:",b/a # numpy中的除是對矩陣元素展開計算
總結
以上是生活随笔為你收集整理的Python中的numpy矩阵运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中flatten( ),ma
- 下一篇: 支持向量机—核函数源码分析(2)