日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python中的numpy矩阵运算

發(fā)布時(shí)間:2024/9/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中的numpy矩阵运算 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

numpy中matrix 和 array的區(qū)別

Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個(gè)小的分支,包含于Array。所以matrix 擁有array的所有特性。

在numpy中matrix的主要優(yōu)勢(shì)是:
(1)相對(duì)簡(jiǎn)單的乘法運(yùn)算符號(hào)。
例如,a和b是兩個(gè)matrices,那么a*b,就是矩陣積。

>>> import numpy as np >>> a=np.mat('4 3; 2 1') >>> b=np.mat('1 2; 3 4') >>> a matrix([[4, 3],[2, 1]]) >>> b matrix([[1, 2],[3, 4]]) >>> a*b matrix([[13, 20],[ 5, 8]])

(2)matrix 和 array 都可以通過(guò)objects后面加.T 得到其轉(zhuǎn)置。但是 matrix objects 還可以在后面加 .H得到共軛矩陣, 加 .I 得到逆矩陣。相反的是在numpy里面arrays遵從逐個(gè)元素的運(yùn)算,所以array:c 和d的c?d運(yùn)算相當(dāng)于對(duì)應(yīng)的元素相乘

>>> c=np.array([[4, 3], [2, 1]]) >>> d=np.array([[1, 2], [3, 4]]) >>> c*d array([[4, 6],[6, 4]])

(3) ?? 運(yùn)算符的作用也不一樣 :

>>> a**2 matrix([[22, 15],[10, 7]]) >>> c**2 array([[16, 9],[ 4, 1]])

因?yàn)閍是個(gè)matrix,所以a??2返回的是a?a,相當(dāng)于矩陣相乘。而c是array,c??2相當(dāng)于,c中的元素逐個(gè)求平方。

(3)numpy中矩陣間的除法運(yùn)算

>>> a/2 matrix([[2, 1],[1, 0]]) >>> a/b matrix([[4, 1],[0, 0]])

取得是整數(shù)

基本運(yùn)算

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 #轉(zhuǎn)置 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中的除是對(duì)矩陣元素展開(kāi)計(jì)算 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

結(jié)果:

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.]]

注意矩陣除法運(yùn)算的結(jié)果
print "\n a/b \n:",b/a # numpy中的除是對(duì)矩陣元素展開(kāi)計(jì)算

總結(jié)

以上是生活随笔為你收集整理的Python中的numpy矩阵运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。