python數(shù)組和矩陣的用法解讀
python數(shù)組和矩陣
先創(chuàng)建一個一維數(shù)組
直接定義一個數(shù)組:
a = [1,2,3,4,5] b = ['a','c','c','s'] print(a) print(b)
輸出結(jié)果:
通過鍵盤輸入一個數(shù)組,每個數(shù)用空格隔開:
a = input().split(' ') print(a)
輸出結(jié)果:
但是這個時候返回的a是一個字符串類型的列表,要轉(zhuǎn)換為想要的類型該怎么做呢?
轉(zhuǎn)換成int類型:
a = input().split(' ') print(a) #遍歷每個元素進行轉(zhuǎn)換 c=[] for i in a: c.append(int(i)) for i in range(0,len(c)): print(c[i],end=" ") print() #使用內(nèi)置函數(shù)map() d=list(map(int,a)) for i in range(0,len(d)): print(d[i],end=" ") print() #利用列表的推導(dǎo)式 e=[int(i) for i in a] for i in range(0,len(e)): print(e[i],end=" ")
輸出結(jié)果:
二維數(shù)組該如何創(chuàng)建呢?
直接循環(huán)定義:
arr = [[0] * 3 for i in range(2)] print(arr) arr[0][1] = 1 print(arr)
高級方法有沒有?當(dāng)然有,就是numpy包的使用
import numpy as np #創(chuàng)建全零數(shù)組,使用頻率高 #dtype 默認float類型 arr = np.zeros((2,5),dtype=int) print(arr) arr[1][0] = 1 print(arr) #可以將兩個創(chuàng)建好的一維數(shù)組生成一個二維數(shù)組 a = np.array([[1,2,3],[4,5,6]]) print(a) a[0][0] = 0 print(a)
數(shù)組與矩陣
矩陣是一種二維數(shù)據(jù)結(jié)構(gòu),和二維數(shù)組相似,但二者又有很大差別。很多時候我們都直接將二維數(shù)組當(dāng)作矩陣運算
其實就是numpy中mat()函數(shù)和array()函數(shù)的區(qū)別:
聊區(qū)別就先看看他們的相同的用法,兩者都可以進行矩陣運算
import numpy as np a1 = np.array([[1,2,3], [4,5,6]]) b1 = np.mat([[1,2,3], [4,5,6]]) a2 = np.array(([1,2,3], [4,5,6])) b2 = np.mat(([1,2,3], [4,5,6])) a3 = np.array(((1,2,3), (4,5,6))) b3 = np.mat(((1,2,3), (4,5,6)))
輸出結(jié)果都是
他們得到的矩陣性質(zhì)不同,在矩陣乘法的使用也不同。
mat()和 array ()后面加上 .T 得到轉(zhuǎn)置。但是mat()還可以在后面加 .H 得到共軛矩陣, 加 .I 得到逆矩陣
array()乘法:*代表點乘(對應(yīng)元素相乘),dot()代表矩陣乘(叉乘)。
mat()乘法:*代表矩陣乘(叉乘),multiply()代表點乘。
import numpy as np a = np.array([[1,2,3], [4,5,6],[7,8,9]]) b = np.mat([[1,2,3], [4,5,6],[7,8,9]]) c = np.ones((3,3),dtype=int) print(a) print(b) print(c) #叉乘 print(np.dot(a,c)) print(np.dot(b,c)) #點乘 print(np.multiply(b,c)) print(a*c)
輸出結(jié)果:
array()的平方是矩陣對應(yīng)位置數(shù)的平方,mat()的平方是矩陣乘積
print("a的平方",a**2) print("b的平方",b**2)
輸出結(jié)果:
python矩陣的基本運算
一、python矩陣操作
先引入numpy,以后的教程中,我們都引用為np作為簡寫
使用mat函數(shù)創(chuàng)建一個2X3矩陣
使用shape獲取矩陣大小
使用下標讀取矩陣中的元素
進行行業(yè)轉(zhuǎn)換
通常情況下,使用二維數(shù)組代替矩陣來進行矩陣運算,可見矩陣和數(shù)組基本上都可以
加減法同樣
當(dāng)然列表是不能這么盡興加減的
二、python矩陣乘法
使用Python的numpy包進行矩陣的乘法運算
使用二位數(shù)組創(chuàng)建兩個矩陣A和B
矩陣的數(shù)乘,即矩陣的每一個元素乘以該數(shù)
dot函數(shù)用于矩陣乘法,對于二維數(shù)組,它計算的是矩陣乘積,對于一維數(shù)組,它計算的是內(nèi)積。注意交換矩陣的前后位置會導(dǎo)致不同的結(jié)果
再建立一個二位數(shù)組
驗證矩陣乘法的結(jié)合性(AB)C=A(BC)
加法的分配性:(A+B)C=AC+BC,C(A+B)=CA+CB
數(shù)乘的結(jié)合性
使用eye創(chuàng)建一個單位矩陣
一個矩陣
A乘以一個單位矩陣,還是它本身
三、python矩陣轉(zhuǎn)置
矩陣的轉(zhuǎn)置很簡單,就是將矩陣的行變?yōu)榱?,將列變?yōu)樾?/p>
創(chuàng)建一個矩陣D,使用屬性T得到矩陣D的轉(zhuǎn)置矩陣E
矩陣轉(zhuǎn)置的基本性質(zhì):
驗證性質(zhì)1:(A’)’=A
驗證性質(zhì)2:(A±B)’=A’±B’:
創(chuàng)建兩個尺寸相同的矩陣
驗證性質(zhì)3:(KA)’=KA’
驗證性質(zhì)4:(A×B)’= B’×A’
四、python求方陣的跡
方陣的跡就是主對角元素之和
創(chuàng)建一個方陣(方陣也就是行數(shù)等于列數(shù)的矩陣)
用trace計算方陣的跡
.創(chuàng)建一個方陣F
驗證一下方陣的跡等于方陣的轉(zhuǎn)置的跡
驗證一下方陣的乘積的跡等于
五、python方陣的行列式計算方法
計算方陣的行列式,用到的是numpy模塊的linalg.det方法
行列式的算法:這是二階方陣行列式:
行列式的算法:這是三階行列式
利用E,F(xiàn)進行行列的計算
使用det方法求得方陣E和方陣F的行列式
六、python求逆矩陣/伴隨矩陣
設(shè)A是數(shù)域上的一個n階方陣,若在相同數(shù)域上存在另一個n階矩陣B,使得: AB=BA=E。 則我們稱B是A的逆矩陣,而A則被稱為可逆矩陣。當(dāng)矩陣A的行列式|A|不等于0時才存在可逆矩陣。而伴隨矩陣的定義:
先來求一下矩陣的逆,先引入numpy
創(chuàng)建一個方陣
使用linalg.det求得方陣的行列式
使用linalg.inv求得方陣A的逆矩陣
利用公式:
numpy的計算方法:
七、python解多元一次方程用python的
用python的numpy包中的linalg.solve()方法解多元一次方程
首先看一下我們要解的方程,將這個方程格式調(diào)整好,按照x-y-z-常數(shù)項的順序排列
將未知數(shù)的系數(shù)寫下來,排列成一個矩陣
a={[1,2,1], [2,-1,3], [3,1,2]}
常數(shù)項構(gòu)成一個一維數(shù)組(向量)
使用linalg.solve方法解方程,參數(shù)a指的是系數(shù)矩陣,參數(shù)b指的是常數(shù)項矩陣:
使用點乘的方法可以驗證一下,系數(shù)乘以未知數(shù)可以得到常數(shù)項
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3.5實現(xiàn)的羅馬數(shù)字轉(zhuǎn)換成整數(shù)功能示例
這篇文章主要介紹了Python3.5實現(xiàn)的羅馬數(shù)字轉(zhuǎn)換成整數(shù)功能,涉及Python字符串遍歷與數(shù)值運算相關(guān)操作技巧,需要的朋友可以參考下2019-02-02Python 中的 import 機制之實現(xiàn)遠程導(dǎo)入模塊
模塊導(dǎo)入( import ),是指在一個模塊中使用另一個模塊的代碼的操作,它有利于代碼的復(fù)用。這篇文章主要介紹了Python 的 import 機制:實現(xiàn)遠程導(dǎo)入模塊,需要的朋友可以參考下2019-10-10python-opencv實現(xiàn)視頻指定幀數(shù)間隔圖像的保存功能
這篇文章主要介紹了python-opencv實現(xiàn)視頻指定幀數(shù)間隔圖像的保存的方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04Python+Pygame實戰(zhàn)之吃豆豆游戲的實現(xiàn)
這篇文章主要為大家介紹了如何利用Python中的Pygame模塊實現(xiàn)仿吃豆豆游戲,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python游戲開發(fā)有一定幫助,需要的可以參考一下2022-06-06詳解Python安裝tesserocr遇到的各種問題及解決辦法
這篇文章主要介紹了詳解Python安裝tesserocr遇到的各種問題及解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03python如何實現(xiàn)一個刷網(wǎng)頁小程序
這篇文章主要給大家介紹了關(guān)于利用python如何實現(xiàn)一個刷網(wǎng)頁小程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11