Python?NumPy矩陣對(duì)象詳解及方法
1. 介紹
在數(shù)學(xué)上,矩陣(Matrix)是一個(gè)按照矩形陣列排列的負(fù)數(shù)或?qū)崝?shù)集合,但在NumPy中,矩陣np.matrix
是數(shù)組np.ndarray
的派生類。這意味著矩陣本質(zhì)上是 一個(gè)數(shù)組,擁有數(shù)組的所有屬性和方法;同時(shí),矩陣又有一些不同于數(shù)組的特性和方法首先,矩陣是二維的,不能像數(shù)組一樣幻化成任意維度,即使展開(kāi)或切片,返回也是二維的;其次,矩陣和矩陣、矩陣和數(shù)組都可以做加減乘除運(yùn)算,運(yùn)算結(jié)果都是返回矩陣;最后,矩陣的乘法不同于數(shù)組乘法
2. 創(chuàng)建矩陣
np.mat()
函數(shù)用于創(chuàng)建矩陣,它可以接受列表、數(shù)組甚至是字符串等形式的參數(shù),還可以使用dtype參數(shù)指定數(shù)據(jù)類型,
其代碼如下:
import numpy as np import numpy.matlib as mat print(np.mat([[1,2,3],[4,5,6]], dtype=np.int)) # 使用列表創(chuàng)建矩陣 print(np.mat(np.arange(6).reshape((2,3)))) # 使用數(shù)組創(chuàng)建矩陣 print(np.mat('1 4 7; 2 5 8; 3 6 9')) # 使用Matlab風(fēng)格的字符串創(chuàng)建矩陣
此外,和生成特殊值數(shù)組類似,numpy.matlib
子模塊也提供了多個(gè)函數(shù)用于生成特殊值矩陣和隨機(jī)數(shù)矩陣
print(mat.zeros((2,3))) # 全0矩陣 print(mat.ones((2,3))) # 全1矩陣 print(mat.eye(3)) # 單位矩陣 print(mat.empty((2,3))) # 空矩陣 print(mat.rand((2,3))) # [0,1)區(qū)間隨機(jī)數(shù)矩陣 print(mat.randn((2,3))) # 均值0方差1的高斯(正態(tài))分布矩陣
3. 矩陣特有屬性
矩陣有幾個(gè)特有的屬性,如轉(zhuǎn)置矩陣、逆矩陣、共軛矩陣、共軛轉(zhuǎn)置矩陣等。
import numpy as np m = np.mat(np.arange(6).reshape((2,3))) print(m) print(m.T) # 返回自身的轉(zhuǎn)置矩陣 print(m.H) # 返回自身的共軛轉(zhuǎn)置矩陣 print(m.I) # 返回自身的逆矩陣 print(m.A) # 返回自身數(shù)據(jù)的視圖(ndarray類)
4. 矩陣乘法
矩陣運(yùn)算和數(shù)組運(yùn)算大致相同,只有乘法運(yùn)算有較大差別。兩個(gè)數(shù)組相乘就是對(duì)應(yīng)元素相乘,條件是兩個(gè)數(shù)組的結(jié)構(gòu)相同。事實(shí)上,及時(shí)兩個(gè)數(shù)組的結(jié)構(gòu)不同,只要滿足特定條件,也能做乘法運(yùn)算
import numpy as np a = np.random.randint(0,10,(2,3)) print(a) b = np.random.randint(0,10,3) print(b) print(a*b) # shape不同的兩個(gè)數(shù)組也可以相乘 print(b*a)
除了對(duì)應(yīng)元素相乘,數(shù)組還可以使用np.dot()
函數(shù)相乘
a = np.random.randint(0,10,(2,3)) b = np.random.randint(0,10,3) c = np.random.randint(0,10,(3,2)) print(np.dot(a,b)) print(np.dot(a,c))
屬于數(shù)組而言,使用星號(hào)相乘和使用np.dot()
函數(shù)相乘是完全不同的兩種乘法:對(duì)于矩陣來(lái)說(shuō),不管是使用星號(hào)相乘還是使用np.dot()
函數(shù)相乘,結(jié)果都是np.dot()
函數(shù)相乘的結(jié)果,因?yàn)榫仃嚊](méi)有對(duì)應(yīng)元素相乘這個(gè)概念。np.dot()
函數(shù)實(shí)現(xiàn)的乘法就是矩陣乘法
不是所有的矩陣都能相乘,矩陣乘法不滿足交換律。概括來(lái)說(shuō),就是矩陣A的各行逐一去乘矩陣B的各列。例如,矩陣A的第1行和矩陣B的第1列,它們的元素個(gè)數(shù)一定相等,對(duì)應(yīng)元素相乘后求和的值作為結(jié)果矩陣第1行第1列的值。又如,矩陣A的第3行和矩陣B的第3列,對(duì)應(yīng)元素相乘后求和的值作為結(jié)果矩陣第3行第3列的值。以此類推,最終得到矩陣A乘矩陣B的結(jié)果矩陣
到此這篇關(guān)于Python NumPy矩陣對(duì)象詳解及方法的文章就介紹到這了,更多相關(guān)Python NumPy矩陣對(duì)象 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Cloudinary實(shí)現(xiàn)圖像和視頻上傳詳解
這篇文章主要介紹了Python?Cloudinary實(shí)現(xiàn)圖像和視頻上傳功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-11-11tensorflow ckpt模型和pb模型獲取節(jié)點(diǎn)名稱,及ckpt轉(zhuǎn)pb模型實(shí)例
今天小編就為大家分享一篇tensorflow ckpt模型和pb模型獲取節(jié)點(diǎn)名稱,及ckpt轉(zhuǎn)pb模型實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01python開(kāi)發(fā)微信服務(wù)號(hào)消息推送示例
這篇文章主要為大家介紹了python開(kāi)發(fā)微信服務(wù)號(hào)消息推送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10python利用openpyxl拆分多個(gè)工作表的工作簿的方法
這篇文章主要介紹了python利用openpyxl拆分多個(gè)工作表的工作簿的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09使用seaborn繪制強(qiáng)化學(xué)習(xí)中的圖片問(wèn)題
這篇文章主要介紹了使用seaborn繪制強(qiáng)化學(xué)習(xí)中的圖片問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01python妹子圖簡(jiǎn)單爬蟲(chóng)實(shí)例
這篇文章主要介紹了python妹子圖簡(jiǎn)單爬蟲(chóng),實(shí)例分析了Python爬蟲(chóng)程序所涉及的頁(yè)面源碼獲取、進(jìn)度顯示、正則匹配等技巧,需要的朋友可以參考下2015-07-07