版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基礎(chǔ)知識(shí)《機(jī)器學(xué)習(xí)簡(jiǎn)明教程》高延增侯躍恩羅志堅(jiān)機(jī)械工業(yè)出版社02本章目標(biāo)?理解向量、矩陣的概念及其相應(yīng)的屬性?理解事件、概率、隨機(jī)變量、條件概率、期望宇方差等概念?了解優(yōu)化的基本概念?掌握Python入門知識(shí)?了解機(jī)器學(xué)習(xí)中常用的包目錄/Contents2.12.2線性代數(shù)概率與統(tǒng)計(jì)2.3優(yōu)化2.4Python基礎(chǔ)2.1線性代數(shù)——向量與范數(shù)
2.1線性代數(shù)——向量與范數(shù)
2.1線性代數(shù)——向量與范數(shù)
2.1線性代數(shù)——向量與范數(shù)兩個(gè)向量的夾角:對(duì)于兩個(gè)非零向量x,y∈Rn之間的夾角定義為
該公式表明兩個(gè)向量的內(nèi)積不會(huì)大于這兩個(gè)向量的范數(shù)的乘積.2.1線性代數(shù)——向量與范數(shù)
2.1線性代數(shù)——矩陣
2.1線性代數(shù)——矩陣
矩陣的轉(zhuǎn)置運(yùn)算滿足以下性質(zhì)2.1線性代數(shù)——矩陣
2.1線性代數(shù)——行列式與矩陣的逆
2.1線性代數(shù)——行列式計(jì)算與性質(zhì)
2.1線性代數(shù)——逆矩陣
逆矩陣的性質(zhì):目錄/Contents2.12.2線性代數(shù)概率與統(tǒng)計(jì)2.3優(yōu)化2.4Python基礎(chǔ)2.2概率與統(tǒng)計(jì)——事件與概率
2.2概率與統(tǒng)計(jì)——隨機(jī)變量
則稱函數(shù)p為隨機(jī)變量X的概率密度函數(shù)。從幾何角度理解,
Pr(a≤X≤b)表示為以數(shù)軸區(qū)間[a,b]為底,函數(shù)曲線y=p(x)為頂?shù)那吿菪蔚拿娣e;直觀上,Pr(a≤X≤b)表示連續(xù)隨機(jī)變量X在區(qū)間[a,b]中的概率總和,即概率質(zhì)量之和,而概率密度在該區(qū)間上的積分則對(duì)應(yīng)為該區(qū)間的概率質(zhì)量之和.2.2概率與統(tǒng)計(jì)——隨機(jī)變量
則稱X服從正態(tài)分布N(μ,σ2),并稱μ和σ2為隨機(jī)變量的X的期望與方差(期望與方差的概念見(jiàn)2.2.4)。若μ=0,σ=1,則N(0,1)稱為標(biāo)準(zhǔn)正態(tài)分布。多元正態(tài)分布:給定μ∈Rn和Σ∈Rn×n,其中Σ為對(duì)稱正定矩陣,若n維隨機(jī)變量X的概率密度函數(shù)為則稱X服從多元正態(tài)分布Nμ,Σ,并稱μ和Σ為隨機(jī)變量X的期望和協(xié)方差矩陣。2.2概率與統(tǒng)計(jì)——條件概率與獨(dú)立
若離散隨機(jī)變量X,Y相互獨(dú)立,則有:2.2概率與統(tǒng)計(jì)——條件概率與獨(dú)立
則貝葉斯定理(Bayesiantheorem)表示為:
2.2概率與統(tǒng)計(jì)——期望與方差
2.2概率與統(tǒng)計(jì)——期望與方差
若X為離散型隨機(jī)變量,其取值集合為{x1,x2,?,xn},則離散隨機(jī)變量X的方差為:若X為連續(xù)型隨機(jī)變量,則其方差為:隨機(jī)變量X的標(biāo)準(zhǔn)差(standarddeviation)記為σX,定義為:2.2概率與統(tǒng)計(jì)——期望與方差
2.2概率與統(tǒng)計(jì)——期望與方差大數(shù)定理:設(shè)X1,X2,?,Xn為獨(dú)立同分布的隨機(jī)變量序列,對(duì)任一1≤i≤n滿足EXi=μ且VarXi=σ2≤∞,則對(duì)任意的?>0大數(shù)定理表明,在隨機(jī)試驗(yàn)中,每次出現(xiàn)的結(jié)果不同,但是大量重復(fù)試驗(yàn)出現(xiàn)的結(jié)果的頻率趨近于一個(gè)常數(shù),該常數(shù)為該隨機(jī)試驗(yàn)中隨機(jī)變量的期望。2.2概率與統(tǒng)計(jì)——期望與方差
2.2概率與統(tǒng)計(jì)——最大似然估計(jì)與最大后驗(yàn)估計(jì)最大似然估計(jì):假設(shè)有觀測(cè)數(shù)據(jù)集合D={x1,x2,?,xn}是由某個(gè)概率分布p(x;θ)產(chǎn)生,其中θ為確定而待估計(jì)的概率分布參數(shù),并且滿足對(duì)任意的1≤i,j≤n,觀測(cè)數(shù)據(jù)xi和xj相互獨(dú)立。則數(shù)據(jù)集D出現(xiàn)的概率為p(D;θ)=p(x1,x2,?,xn;θ),由觀測(cè)數(shù)據(jù)的獨(dú)立性可得p(x1,x2,?,xn;θ)=(px1;θ)?p(xn;θ),定義
2.2概率與統(tǒng)計(jì)——最大似然估計(jì)與最大后驗(yàn)估計(jì)由于多個(gè)概率值進(jìn)行連乘操作容易引起數(shù)值溢出的問(wèn)題,通常引入負(fù)對(duì)數(shù)似然函數(shù)(negativeloglikelihood)
2.2概率與統(tǒng)計(jì)——最大似然估計(jì)與最大后驗(yàn)估計(jì)
1.3機(jī)器學(xué)習(xí)的發(fā)展階段年份主要成果代表人物人工智能起源1936自動(dòng)機(jī)模型理論阿蘭?圖靈(AlanTuring)1943MP模型沃倫?麥卡洛克(WarrenMcCulloch)、沃特?皮茨(Walter
Pitts)1951符號(hào)演算馮?諾依曼(JohnvonNeumann)1950邏輯主義克勞德?香農(nóng)(Claude
Shannon)1956人工智能約翰?麥卡錫(JohnMcCarthy)、馬文?明斯基(MarvinMinsky
)、克勞德?香農(nóng)(ClaudeShannon)人工智能初期1958LISP約翰?麥卡錫(JohnMcCarthy)1962感知器收斂理論弗蘭克?羅森布拉特(FrankRosenblatt)1972通用問(wèn)題求解(GPS)艾倫?紐厄爾(AllenNewell)、赫伯特?西蒙(Herbert
Simon)1975框架知識(shí)表示馬文?明斯基(MarvinMinsky)進(jìn)化計(jì)算1965進(jìn)化策略英格?雷森博格(Ingo
Rechenberg
)1975遺傳算法約翰?亨利?霍蘭德(JohnHenryHolland)1992基因計(jì)算約翰?柯扎(JohnKoza)專家系統(tǒng)和知識(shí)工程1965模糊邏輯、模糊集拉特飛?扎德(LotfiZadeh)1969DENDRA、MYCIN費(fèi)根鮑姆(Feigenbaum
)、布坎南(Buchanan
)、萊德伯格(Lederberg)1979ROSPECTOR杜達(dá)(Duda)神經(jīng)網(wǎng)絡(luò)1982自組織網(wǎng)絡(luò)圖沃?科霍寧(Teuvo
Kohonen)1986BP算法魯姆哈特(Rumelhart)、麥克利蘭(McClelland)1989卷積神經(jīng)網(wǎng)絡(luò)樂(lè)康(LeCun)1998LeNet樂(lè)康(LeCun)1997循環(huán)神經(jīng)網(wǎng)絡(luò)RNN塞普?霍普里特(SeppHochreiter)、尤爾根?施密德胡伯(JurgenSchmidhuber)分類算法1986決策樹(shù)ID3算法羅斯?昆蘭(RossQuinlan)1988Boosting
算法弗羅因德(Freund)、米迦勒?卡恩斯(MichaelKearns)1993C4.5算法羅斯?昆蘭(RossQuinlan)1995AdaBoost
算法弗羅因德(Freund)、羅伯特?夏普(Robert
Schapire)1995支持向量機(jī)科林納?科爾特斯(CorinnaCortes)、萬(wàn)普尼克(Vapnik)2001隨機(jī)森林里奧?布雷曼(LeoBreiman)、阿黛勒?卡特勒(Adele
Cutler
)深度學(xué)習(xí)2006深度信念網(wǎng)絡(luò)杰弗里?希爾頓(Geoffrey
Hinton)2012谷歌大腦吳恩達(dá)(Andrew
Ng)2014生成對(duì)抗網(wǎng)絡(luò)GAN伊恩?古德費(fèi)洛(IanGoodfellow)目錄/Contents2.12.2線性代數(shù)概率與統(tǒng)計(jì)2.3優(yōu)化2.4Python基礎(chǔ)2.3優(yōu)化——導(dǎo)數(shù)和梯度
2.3優(yōu)化——導(dǎo)數(shù)和梯度向量和矩陣的導(dǎo)數(shù)滿足以下性質(zhì):2.3優(yōu)化——導(dǎo)數(shù)和梯度
2.3優(yōu)化——凸函數(shù)與梯度下降凸函數(shù)示意圖
2.3優(yōu)化——凸函數(shù)與梯度下降
則不斷應(yīng)用該過(guò)程直至收斂到局部最優(yōu)點(diǎn)。
稱為梯度下降法。
目錄/Contents2.12.2線性代數(shù)概率與統(tǒng)計(jì)2.3優(yōu)化2.4Python基礎(chǔ)2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)標(biāo)識(shí)符,由字母、數(shù)字、下劃線組成,區(qū)分大小寫,不能以數(shù)字開(kāi)頭。以下劃線開(kāi)頭的標(biāo)識(shí)符有特殊含義。以單下劃線開(kāi)頭的(_foo)的代表不能直接訪問(wèn)的類屬性,以雙下劃線開(kāi)頭的(__foo)代表類的私有成員;以雙下劃線開(kāi)頭和結(jié)尾的(__foo__)代表Python里特殊方法專用的標(biāo)識(shí),如__init__()代表類的構(gòu)造函數(shù)??s進(jìn),Python的代碼塊不使用大括號(hào)來(lái)控制類、函數(shù)、以及其他邏輯判斷,而是使用縮進(jìn)來(lái)寫實(shí)現(xiàn)代碼分組。通常用四個(gè)空格來(lái)進(jìn)行縮進(jìn)。示例代碼如下:a,b=1,2ifa>b:x=aelse:x=bprint(x)運(yùn)行結(jié)果為:2注釋,python中單行注釋采用#開(kāi)頭。多行注釋使用三個(gè)單引號(hào)''或三個(gè)雙引號(hào)"""。示例代碼:"""三個(gè)雙引號(hào)注釋(可以換行)""""一個(gè)雙引號(hào)注釋(不能換行)"defmy_abs(x):#絕對(duì)值函數(shù)ifx>=0:return(x)else:return(-x)2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)一條語(yǔ)句分多行顯示,python語(yǔ)句中一般以新行作為為語(yǔ)句的結(jié)束符。但是我們可以使用斜杠\將一行的語(yǔ)句分為多行顯示。如果有{},[],()跨行則可以不使用\。代碼示例如下:a=1+2+3+4+5+6+7+\7+8+9+10b=[1,2,3,4,5,6,7,8]Python也可以在同一行中使用多條語(yǔ)句,語(yǔ)句之間使用分號(hào)分割。2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)Python輸出可以直接用print函數(shù)(python3.x中,print為內(nèi)置函數(shù)),示例代碼如下:print("Hello,Python.")x=1234print(x)#直接打印輸出變量y=5678print('x=%d,y=%d'%(x,y))#格式化輸出代碼運(yùn)行結(jié)果為:Hello,Python.1234x=1234,y=5678Python3.x中,input()函數(shù)接受一個(gè)標(biāo)準(zhǔn)輸入數(shù)據(jù),返回為string類型。示例代碼如下:height
=
float(input('請(qǐng)輸入你的身高(單位:米):'))
print('你的身高是:%f米'%height)
代碼執(zhí)行到第一行的時(shí)候,程序等待用戶輸入,若用戶輸入1.7,,則代碼運(yùn)行結(jié)果為:你的身高是:1.700000米輸入輸出2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)基本變量類型變量就是存儲(chǔ)在內(nèi)存中的值,在創(chuàng)建變量時(shí),解釋器會(huì)分配內(nèi)存,并決定什么數(shù)據(jù)可以被存儲(chǔ)在內(nèi)存中。Python語(yǔ)言中,變量不需要聲明,但在使用前都必須賦值,解釋器會(huì)根據(jù)賦值自動(dòng)指定變量類型。每個(gè)變量用“=”號(hào)進(jìn)行賦值,“=”號(hào)左邊為變量名,右邊為存儲(chǔ)在變量中的值,變量賦值以后該變量才會(huì)被創(chuàng)建。示例代碼如下:message="Helloworld"#將字符串"Helloworld"賦值給變量messagea=1#將整形1賦值給變量ab=1.234#將浮點(diǎn)型1.234賦值給變量bMax_CONNECTIONS=5000#將整型5000賦值給常量Max_CONNECTIONS由于Python沒(méi)有內(nèi)置的常量類型的關(guān)鍵字,Python程序員默認(rèn)用全大寫來(lái)指出某個(gè)變量為常量,在編程過(guò)程中不去改變它的值。2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)基本變量類型Python還可以用一條語(yǔ)句對(duì)多個(gè)變量進(jìn)行賦值,示例代碼如下:a,b,c,d=20,5.5,True,4+3jprint(type(a),type(b),type(c),type(d))代碼運(yùn)行結(jié)果為:<class'int'><class'float'><class'bool'><class'complex'>2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)基本變量類型Python3中的標(biāo)準(zhǔn)數(shù)據(jù)類型有六種:Number(數(shù)字)、String(字符串)、List(列表)、Tuple(元組)、Set(集合)、Dictionary(字典)。其中,Number(數(shù)字)、String(字符串)、Tuple(元組)不可變;List(列表)、Dictionary(字典)、Set(集合)可變。Number(數(shù)字)類型中,Python3支持int、float、bool、complex(復(fù)數(shù)),解釋器會(huì)根據(jù)值來(lái)自動(dòng)匹配數(shù)具體的類型(type)。示例代碼如下:a,b,c,d=20,5.5,True,4+3jprint(type(a),type(b),type(c),type(d))運(yùn)行結(jié)果為:<class'int'><class'float'><class'bool'><class'complex'>2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)基本變量類型字符串或串(String)是由數(shù)字、字母、下劃線組成的一串字符。在python中用引號(hào)括起的都是字符串,引號(hào)可以是雙引號(hào)也可以是單引號(hào)。Python中,String也是一種對(duì)象類型,有內(nèi)部的方法和屬性可以調(diào)用。字符串常用的方法示例代碼如下:name="houyueen"lower_name=name.lower()upper_name=name.upper()title_name=name.title()print(f"lower_nameis{lower_name},upper_nameis{upper_name},\title_nameis{title_name}")代碼運(yùn)行結(jié)果為:lower_nameishouyueen,upper_nameisHOUYUEEN,title_nameisHouYueen2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)有序數(shù)據(jù)結(jié)構(gòu):列表list、元組tuple列表是有序集合,列表中可以放任何變量,沒(méi)有類型限制,列表通常放有多個(gè)元素,由方括號(hào)“[]”表示列表。示例代碼如下:list1=[1,'python',3,3.14]print(f"list1[0]is:{list1[0]}")list1[0]='new'print(f"Now,list1is:{list1}")代碼運(yùn)行結(jié)果為:list1[0]is:1Now,list1is:['new','python',3,3.14]列表內(nèi)置了一些方法可以調(diào)用,append方法在列表后面添加元素、pop方法刪除列表的最后一個(gè)元素、sort方法對(duì)列表進(jìn)行永久地修改排序,還可以使用冒號(hào):對(duì)列表進(jìn)行切片操作。示例代碼:bicycles=["trek","connondale","redline","specialized"]bicycles.append("giant")print(f"appendedbicyclesis:{bicycles}")bicycles.pop()print(f"poppedbicyclesis:{bicycles}")bicycles.sort()print(f"sortedbicyclesis:{bicycles}")print(f"bicycles[1:3]isf{bicycles[1:3]}")運(yùn)行結(jié)果為:appendedbicyclesis:['trek','connondale','redline','specialized','giant']poppedbicyclesis:['trek','connondale','redline','specialized']sortedbicyclesis:['connondale','redline','specialized','trek']bicycles[1:3]isf['redline','specialized']2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)有序數(shù)據(jù)結(jié)構(gòu):列表list、元組tupletuple(元組),是有序集合,是不可變的,但可以進(jìn)行組合和復(fù)制運(yùn)算后會(huì)生成一個(gè)新的元組。示例代碼如下:tuple_var1=(1,3,5,'xyz')tuple_var2=(3,4,5)tuple_var3=tuple_var1+tuple_var2print(f"tuple_var3is:{tuple_var3}")tuple_var1[1]=3上述代碼1~4行運(yùn)行沒(méi)有問(wèn)題,但第5行試圖改變tuple_var1的值就會(huì)報(bào)錯(cuò),因?yàn)閠uple類型一旦聲明則不可改變。代碼運(yùn)行結(jié)果為(第3行開(kāi)始的報(bào)錯(cuò)信息會(huì)因代碼運(yùn)行環(huán)境有所不同):1 tuple_var3is:(1,3,5,'xyz',3,4,5)2 ---------------------------------------------------------------------------3 TypeErrorTraceback(mostrecentcalllast)4 d:\LocalDocs\ai_textbook_demos\demos\Chap02\chap02_Python_tutorial.ipynbCell62in<cellline:5>()5 3tuple_var3=tuple_var1+tuple_var26 4print(f"tuple_var3is:{tuple_var3}")7 ---->5tuple_var1[1]=38 TypeError:'tuple'objectdoesnotsupportitemassignment2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)無(wú)序數(shù)據(jù)結(jié)構(gòu):集合set、字典dict集合是一個(gè)無(wú)序不重復(fù)元素的集,基本功能包括關(guān)系運(yùn)算和消除重復(fù)元素。集合的基本形式如{'apple','orange','banana'}。集合是無(wú)序的,因此您無(wú)法確定項(xiàng)目的顯示順序,但可以通過(guò)for循環(huán)來(lái)遍歷一個(gè)集合。不同的集合之間可以進(jìn)行交(&)、并(|)、差(-)、對(duì)稱差集(^)等運(yùn)算,示例代碼如下:set_var1={"apple","banana","cherry"}set_var1.add("grape")set_var2={"apple","banana","orange"}set_var3=set_var1&set_var2set_var4=set_var1|set_var2print(f"set_var1is:{set_var1}")print(f"set_var2is:{set_var2}")print(f"set_var3is:{set_var3}")print(f"set_var4is:{set_var4}")代碼運(yùn)行結(jié)果為:set_var1is:{'banana','cherry','apple','grape'}set_var2is:{'orange','banana','apple'}set_var3is:{'banana','apple'}set_var4is:{'orange','grape','banana','cherry','apple'}2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)無(wú)序數(shù)據(jù)結(jié)構(gòu):集合set、字典dict字典是一系列鍵值對(duì),每個(gè)鍵都與一個(gè)值相關(guān)聯(lián),可以使用鍵來(lái)訪問(wèn)其相關(guān)聯(lián)的值。與鍵相關(guān)聯(lián)的值可以是整數(shù)、浮點(diǎn)數(shù)、列表、字典等任何Python對(duì)象。字典用放在花括號(hào)“{}”中的鍵值對(duì)來(lái)表示,鍵和值用冒號(hào)“:”分開(kāi),鍵值對(duì)之間用逗號(hào)“,”分開(kāi)。示例代碼如下:ict_var={"color":"red","points":5}print(f"dict_var[\'color\']is:{dict_var['color']}.")代碼運(yùn)行結(jié)果為:dict_var['color']is:red.為字典添加鍵值對(duì)、修改字典中已有鍵的值的方法類似;另外,可以使用del語(yǔ)句刪除字典中的鍵值對(duì)。示例代碼:dict_var={"color":"red","points":5}print(f"olddict_varis:{dict_var}")dict_var['color']='blue'dict_var['x_point']=100print(f"newdict_varis:{dict_var}")deldict_var['points']print(f"dict_vardeletedis:{dict_var}")代碼運(yùn)行結(jié)果為:olddict_varis:{'color':'red','points':5}newdict_varis:{'color':'blue','points':5,'x_point':100}dict_vardeletedis:{'color':'blue','x_point':100}2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)無(wú)序數(shù)據(jù)結(jié)構(gòu):集合set、字典dict使用get方法訪問(wèn)字典中某個(gè)鍵的值,還可以指定被訪問(wèn)的字典中不存在該鍵時(shí)的返回內(nèi)容,示例代碼如下:dict_var={"color":"red","points":5,"x_point":100,"y_point":50}color=dict_var.get("color","Nocolorvalueassigned.")z_point=dict_var.get("z_point","Noz_pointvalueassigned.")print(color)print(z_point)代碼運(yùn)行結(jié)果為:redNoz_pointvalueassigned.可以使用for循環(huán)來(lái)遍歷字典,示例代碼:dict_var={"color":"red","points":5,"x_point":100,"y_point":50}fork,vindict_var.items():print(f"keyis:{k},valueis:{v}.")代碼運(yùn)行結(jié)果如下:keyis:color,valueis:red.keyis:points,valueis:5.keyis:x_point,valueis:100.keyis:y_point,valueis:50.2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)條件語(yǔ)句if在編程過(guò)程中,通常需要通過(guò)對(duì)一些條件進(jìn)行判斷,進(jìn)而決定程序執(zhí)行符合條件的相應(yīng)語(yǔ)句。和其他語(yǔ)言一樣,python的if語(yǔ)句可以檢查程序當(dāng)前的狀態(tài),并采取相應(yīng)的措施。if語(yǔ)句一般有if結(jié)構(gòu)、if-else結(jié)構(gòu)、if-elif-else結(jié)構(gòu)三種,示例代碼如下:age=int(input("inputyourageplease:"))ifage<2:print("Youareababy")elifage<12:print("Youareakid")elifage<30:print("Youareayoungpeople")elifage<60:print("Youareamiddle-agedpeople")else:print("Youareanoldpeople")運(yùn)行上面的代碼,若在第1行input函數(shù)時(shí)執(zhí)行時(shí)輸入10,代碼運(yùn)行結(jié)果為:Youareakidif后面跟著的是條件判斷語(yǔ)句,如果是True,則執(zhí)行if后面的語(yǔ)句塊,如果是False則跳過(guò)if后面的語(yǔ)句塊,對(duì)elif進(jìn)行判斷,如上例中的3個(gè)elif都為False,則執(zhí)行else后面的語(yǔ)句塊。這里需要注意的是,無(wú)論是if還是elif后面不能跟賦值語(yǔ)句(如ifa=1:),否則解釋器會(huì)報(bào)錯(cuò)。2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)循環(huán)語(yǔ)句for、whilefor循環(huán)用于迭代序列(即列表,元組,字典,集合或字符串)。這與其他編程語(yǔ)言中的for關(guān)鍵字不太相似,而是更像其他面向?qū)ο缶幊陶Z(yǔ)言中的迭代器方法。通過(guò)使用for循環(huán),我們可以為列表、元組、集合中的每個(gè)項(xiàng)目執(zhí)行一組語(yǔ)句。示例代碼:fruits=["apple","banana","cherry"]forxinfruits:print(x)ifx=="banana":break上例中,依次取出列表fruits中的元素,并打印,當(dāng)拿到字符串"banana"時(shí),則執(zhí)行break語(yǔ)句,即退出for循環(huán)。如果沒(méi)有拿到字符串"banana",則在拿完列表fruits中的所有元素時(shí),將退出for循環(huán)。因此,代碼運(yùn)行結(jié)果為:applebanana2.4Python編程基礎(chǔ)——語(yǔ)法基礎(chǔ)循環(huán)語(yǔ)句for、while如需循環(huán)一組代碼指定的次數(shù),可以使用range()函數(shù),range()函數(shù)返回一個(gè)數(shù)字序列,默認(rèn)情況下從0開(kāi)始,并遞增1(默認(rèn)地),并以指定的數(shù)字結(jié)束。示例代碼如下:foriinrange(3):print(i)代碼運(yùn)行結(jié)果為:012for循環(huán)將對(duì)集合中的每個(gè)元素都執(zhí)行一個(gè)代碼塊,當(dāng)遍歷完所有元素后將退出循環(huán),而while循環(huán)則不斷運(yùn)行,直到指定的條件不滿足為止。示例代碼如下:number=0whilenumber<3: number+=1 print(number)代碼運(yùn)行結(jié)果為:1232.4Python編程基礎(chǔ)——Python運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算也即數(shù)學(xué)運(yùn)算,Python通過(guò)算術(shù)運(yùn)算符對(duì)數(shù)字或變量等進(jìn)行數(shù)學(xué)運(yùn)算,比如加減乘除對(duì)應(yīng)的算術(shù)運(yùn)算符分別為:+、-、*、/。Python常用的算術(shù)運(yùn)算符如表:運(yùn)算符說(shuō)明實(shí)例結(jié)果+加12.45+1527.45-減4.56-0.26 4.3*乘5*3.618.0/除法(和數(shù)學(xué)中的規(guī)則一樣)7/23.5//整除(只保留商的整數(shù)部分)7//23%取余,即返回除法的余數(shù)7%21**冪(次方)運(yùn)算,即返回x的y次方2**416,即24result1=1+(100-20)/4+5*2#四則運(yùn)算print("result1=",result1)
importmathfrommathimportpi#引入常量piresult2=math.sin(pi/2)#三角函數(shù)print("result2=",result2)執(zhí)行結(jié)果如下:result1=31.0result2=1.02.4Python編程基礎(chǔ)——Python運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符用來(lái)把右側(cè)的值傳遞給左側(cè)的變量(或者常量);可以直接將右側(cè)的值交給左側(cè)的變量,也可以進(jìn)行某些運(yùn)算后再交給左側(cè)的變量,比如加減乘除、函數(shù)調(diào)用、邏輯運(yùn)算等。Python中最基本的賦值運(yùn)算符是等號(hào)“=”,結(jié)合其它運(yùn)算符,“=”還能擴(kuò)展出更強(qiáng)大的賦值運(yùn)算符,如表:val1_int=100val2_f=25.5val1_int-=80#等價(jià)于n1=n1-80val2_f*=val1_int-10#等價(jià)于f1=f1*(n1-10)print("val1_int=%d"%val1_int)print("val2_f=%.2f"%val2_f)運(yùn)行結(jié)果如下:val1_int=20val2_f=255.00運(yùn)算符說(shuō)明用法舉例等價(jià)形式=最基本的賦值運(yùn)算x=yx=y+=加賦值x+=yx=x+y-=減賦值x-=yx=x-y*=乘賦值x*=yx=x*y/=除賦值x/=yx=x/y%=取余數(shù)賦值x%=yx=x%y**=冪賦值x**=yx=x**y//=取整數(shù)賦值x//=yx=x//y&=按位與賦值x&=yx=x&y|=按位或賦值x|=yx=x|y^=按位異或賦值x^=yx=x^y<<=左移賦值x<<=yx=x<<y,這里的y指的是左移的位數(shù)>>=右移賦值x>>=yx=x>>y,這里的y指的是右移的位數(shù)2.4Python編程基礎(chǔ)——Python運(yùn)算符位運(yùn)算符Python位運(yùn)算按照數(shù)據(jù)在內(nèi)存中的二進(jìn)制位(Bit)進(jìn)行操作,它一般用于底層開(kāi)發(fā)(算法設(shè)計(jì)、驅(qū)動(dòng)、圖像處理、單片機(jī)等),在應(yīng)用層開(kāi)發(fā)(Web開(kāi)發(fā)、Linux運(yùn)維等)中并不常見(jiàn)。Python位運(yùn)算符只能用來(lái)操作整數(shù)類型,它按照整數(shù)在內(nèi)存中的二進(jìn)制形式進(jìn)行計(jì)算。Python支持的位運(yùn)算符如表:位運(yùn)算符說(shuō)明使用形式舉例&按位與a&b4&5|按位或a|b4|5^按位異或a^b4^5~按位取反~a~4<<
按位左移a<<b4<<2,表示整數(shù)4按位左移2位>>
按位右移a>>b4>>2,表示整數(shù)
4按位右移2位result=9|5print("9|5=",result)代碼運(yùn)行結(jié)果如下:9|5=132.4Python編程基礎(chǔ)——Python運(yùn)算符比較運(yùn)算符比較運(yùn)算符,也稱關(guān)系運(yùn)算符,用于對(duì)常量、變量或表達(dá)式的結(jié)果進(jìn)行大小比較。如果這種比較是成立的,則返回True(真),反之則返回False(假)。Python支持的比較運(yùn)算符如表:比較運(yùn)算符說(shuō)明>
大于,如果>前面的值大于后面的值,則返回True,否則返回False。<
小于,如果<前面的值小于后面的值,則返回True,否則返回False。==等于,如果==兩邊的值相等,則返回True,否則返回False。>=大于等于(等價(jià)于數(shù)學(xué)中的≥),如果>=前面的值大于或者等于后面的值,則返回True,否則返回False。<=小于等于(等價(jià)于數(shù)學(xué)中的≤),如果<=前面的值小于或者等于后面的值,則返回True,否則返回False。!=不等于(等價(jià)于數(shù)學(xué)中的≠),如果!=兩邊的值不相等,則返回True,否則返回False。is判斷兩個(gè)變量所引用的對(duì)象是否相同,如果相同則返回True,否則返回False。isnot判斷兩個(gè)變量所引用的對(duì)象是否不相同,如果不相同則返回True,否則返回False。print("89是否大于100:",89>100)print("24*5是否大于等于76:",24*5>=76)print("86.5是否等于86.5:",86.5==86.5)print("34是否等于34.0:",34==34.0)print("False是否小于True:",False<True)print("True是否等于True:",True<True)代碼運(yùn)行結(jié)果如下:89是否大于100:False24*5是否大于等于76:True86.5是否等于86.5:True34是否等于34.0:TrueFalse是否小于True:TrueTrue是否等于True:False2.4Python編程基礎(chǔ)——Python運(yùn)算符邏輯運(yùn)算符用于對(duì)布爾型變量進(jìn)行運(yùn)算,其結(jié)果也是布爾型的(注意:若邏輯運(yùn)算用于非布爾型變量,得到的結(jié)果也可能是非布爾型的),只有and、or、not三種,如表:邏輯運(yùn)算符含義基本格式說(shuō)明and邏輯與運(yùn)算,等價(jià)于數(shù)學(xué)中的“且”aandb當(dāng)a和b兩個(gè)表達(dá)式都為真時(shí),aandb的結(jié)果才為真,否則為假。or邏輯或運(yùn)算,等價(jià)于數(shù)學(xué)中的“或”aorb當(dāng)a和b兩個(gè)表達(dá)式都為假時(shí),aorb的結(jié)果才是假,否則為真。not邏輯非運(yùn)算,等價(jià)于數(shù)學(xué)中的“非”nota如果a為真,那么nota的結(jié)果為假;如果a為假,那么nota的結(jié)果為真。相當(dāng)于對(duì)a取反。邏輯運(yùn)算的示例代碼如下:print(2>0and3<0or3<0)print(2>0or3<0and3<0)print(('test'=='Test')or1!=1.0and2==2.0)代碼運(yùn)行結(jié)果如下:FalseTrueFalse2.4Python編程基礎(chǔ)——Python運(yùn)算符三目運(yùn)算符使用ifelse實(shí)現(xiàn)三目運(yùn)算符(條件運(yùn)算符)的格式為:“exp1ifcontionelseexp2”。a=3b=4max=aifa>belsebprint("max=",max)示例代碼運(yùn)行結(jié)果為:max=42.4Python編程基礎(chǔ)——Python運(yùn)算符運(yùn)算符優(yōu)先級(jí)和結(jié)合性當(dāng)多個(gè)運(yùn)算符同時(shí)出現(xiàn)在一個(gè)表達(dá)式中時(shí),先執(zhí)行哪個(gè)運(yùn)算符由運(yùn)算符的優(yōu)先級(jí)決定。Python支持的運(yùn)算符有幾十種之多,被劃分成將近二十個(gè)優(yōu)先級(jí),有的運(yùn)算符優(yōu)先級(jí)不同,有的運(yùn)算符優(yōu)先級(jí)相同。一個(gè)表達(dá)式中有多個(gè)優(yōu)先級(jí)時(shí)按優(yōu)先級(jí)從高到低先后執(zhí)行,如果優(yōu)先級(jí)相同,則大多數(shù)服從左結(jié)合性(即相同優(yōu)先級(jí)的運(yùn)算符按從左到右依次執(zhí)行);有兩個(gè)例外,乘方(**)運(yùn)算符、單目運(yùn)算符(如邏輯非運(yùn)算not)服從右結(jié)合性。運(yùn)算符說(shuō)明Python運(yùn)算符優(yōu)先級(jí)結(jié)合性小括號(hào)()19無(wú)索引運(yùn)算符x[i]或x[i1:i2[:i3]]18左屬性訪問(wèn)x.attribute17左乘方**16右按位取反~15右符號(hào)運(yùn)算符+(正號(hào))、-(負(fù)號(hào))14右乘除*、/、//、%13左加減+、-12左位移>>、<<11左按位與&10右按位異或^9左按位或|8左比較運(yùn)算符==、!=、>、>=、<、<=
7左is運(yùn)算符is、isnot6左in運(yùn)算符in、notin5左邏輯非not4右邏輯與and3左邏輯或or2左逗號(hào)運(yùn)算符exp1,exp21左2.4Python編程基礎(chǔ)——Python函數(shù)函數(shù)是帶名字的代碼塊,用于完成具體的任務(wù)def函數(shù)名(參數(shù)列表)://實(shí)現(xiàn)特定功能的多行代碼[return[返回值]]用[]括起來(lái)的為可選擇部分,即可以使用,也可以省略。defhello_user(first_name,last_name,middle_name=""):print(f"Hello{first_name.title()}{middle_name.title()}{last_name.title()}")函數(shù)定義代碼示例hello_user("william","clinton")#位置參數(shù)hello_user("william","clinton","jafferson")#位置參數(shù)+關(guān)鍵字參數(shù)hello_user("William","Clinton",middle_name="Jafferson")函數(shù)調(diào)用示例HelloWilliamClintonHelloWilliamJaffersonClintonHelloWilliamJaffersonClinton代碼運(yùn)行結(jié)果2.4Python編程基礎(chǔ)——Python函數(shù)Python的函數(shù)還支持可變長(zhǎng)度參數(shù)??勺冮L(zhǎng)參數(shù)主要有兩種形式,即*parameter和**parameter。前者用來(lái)接收多個(gè)位置參數(shù)并將其放在一個(gè)元組中,后者接收多個(gè)關(guān)鍵參數(shù)并將其放入字典中。defdemo(*p):print(p)
demo(1,2,3,4,5,6)代碼運(yùn)行結(jié)果如下:(1,2,3,4,5,6)defdemo(**p): print(p)
demo(x=1,y=2,z=3)代碼運(yùn)行結(jié)果如下:{'x':1,'y':2,'z':3}可見(jiàn),這些關(guān)鍵字參數(shù)被封裝成了一個(gè)字典傳入了函數(shù)中。此外,很多函數(shù)需要通過(guò)return語(yǔ)句返回執(zhí)行結(jié)果。return語(yǔ)句用來(lái)從一個(gè)函數(shù)中返回結(jié)果并結(jié)束函數(shù)的執(zhí)行,不論return語(yǔ)句出現(xiàn)在函數(shù)中的任何位置,一旦執(zhí)行到了return語(yǔ)句都將結(jié)束函數(shù)的運(yùn)行并返回結(jié)果。如果函數(shù)在結(jié)束前沒(méi)有執(zhí)行到return語(yǔ)句,函數(shù)將返回空值。2.4Python編程基礎(chǔ)——類和對(duì)象在面向?qū)ο蟮木幊趟枷胫?,程序被看成一系列?duì)象的相互作用?;镜姆庋b形式是類。設(shè)計(jì)類的基本要點(diǎn)是關(guān)系(Relation)、屬性(Property)、方法(Method)。類和類之間常用的方法包括繼承關(guān)系、包含關(guān)系、使用關(guān)系。與面向?qū)ο笙嚓P(guān)基本術(shù)語(yǔ)包括:類(class),抽象數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)和算法的封裝,如定義一個(gè)類狗(dog);對(duì)象(object),類的實(shí)例,如dog類的一個(gè)實(shí)例,名叫點(diǎn)點(diǎn)的小黑狗;屬性(properties),和對(duì)象關(guān)聯(lián)的數(shù)據(jù)部分,如體重(weight)、品種(breed);方法(methods),和對(duì)象關(guān)聯(lián)的算法部分,如run(),eat(),bark()等。面向?qū)ο缶幊痰膬?yōu)點(diǎn)主要有兩方面:容易封裝和使用、容易擴(kuò)展(繼承、多態(tài))。Python語(yǔ)言完全采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,是真正面向?qū)ο蟮母呒?jí)語(yǔ)言,完全支持面向?qū)ο蟮幕竟δ?,如封裝、繼承、多態(tài)以及對(duì)基類方法的覆蓋或重寫。2.4Python編程基礎(chǔ)——類和對(duì)象classDog(object):#__init__為構(gòu)造函數(shù)def__init__(self,name,weight,breed,age):=nameself.weight=weightself.breed=breed
#__age為私有屬性self.__age=age
defrun(self):print('%sisrunning...'%())
defbark(self):print('Bowwow,Bowwow,Bowwow...')
defeat(self,food):print('%siseating%s...'%(,food))
defsleep(self):print('Zzz...Zzz...Zzz...')
#__think為私有方法def__think(self):print('Ifeelmyselfaheroandveryhandsome!')
#speak公有方法可以調(diào)用私有方法defbark(self,sound='Woof!'):self.__think()print(sound)左側(cè)示例定義了一個(gè)類Dog,在定義類名時(shí),通常首字母大寫,這是一個(gè)推薦參考的命名習(xí)慣。類的所有方法都必須至少有一個(gè)名為self的參數(shù),且必須是方法的第一個(gè)參數(shù)。一般情況下,我們把類中的函數(shù)稱為方法。__init__()方法是一個(gè)特殊方法,當(dāng)創(chuàng)建類的對(duì)象時(shí),該方法將被自動(dòng)執(zhí)行。2.4Python編程基礎(chǔ)——類和對(duì)象snoopy=Dog('snoopy',3,'Husky',4)#實(shí)例化一個(gè)對(duì)象#調(diào)用公有屬性和公有方法snoopy.breedsnoopy.run()snoopy.bark()snoopy.eat('meat')snoopy.sleep()snoopy.bark()snoopyisrunning...Ifeelmyselfaheroandveryhandsome!Woof!snoopyiseatingmeat...Zzz...Zzz...Zzz...Ifeelmyselfaheroandveryhandsome!Woof!代碼運(yùn)行結(jié)果為:編寫類時(shí),并非總要從空白開(kāi)始,如果需要編寫的類是另一個(gè)現(xiàn)成類的特殊版本,可以使用類的繼承。一個(gè)類繼承另一個(gè)類時(shí),可以獲得另一個(gè)類所用的屬性和方法,被繼承的類稱為父類,新的類稱為子類。在繼承父類的屬性和方法的同時(shí),子類還可以重寫父類的方法和定義自己獨(dú)有的屬性和方法。在Dog類的基礎(chǔ)上再定義一個(gè)BullDog類,BullDog類繼承自Dog類,classBullDog(Dog): defbark(self,sound="Grr!"): print(sound)SnoopyBullDog=BullDog('snoopy',3,'Husky',4)SnoopyBullDog.bark()代碼運(yùn)行結(jié)果為:Grr!2.4Python編程基礎(chǔ)——常用的Python包NumPyNumPy(NumericalPython)是Python語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。它的前身Numeric最早是由JimHugunin與其它協(xié)作者共同開(kāi)發(fā)。2005年,TravisOliphant在Numeric中結(jié)合了另一個(gè)同性質(zhì)的程序庫(kù)Numarray的特色,并加入了其它擴(kuò)展而開(kāi)發(fā)了NumPy。NumPy為開(kāi)放源代碼并且由許多協(xié)作者共同維護(hù)開(kāi)發(fā)。NumPy是一個(gè)運(yùn)行速度非??斓臄?shù)學(xué)庫(kù),主要用于數(shù)組計(jì)算,包含:一個(gè)強(qiáng)大的N維數(shù)組對(duì)象ndarray、廣播功能函數(shù)、整合C/C++/Fortran代碼的工具和線性代數(shù)、傅里葉變換、隨機(jī)數(shù)生成等功能。NumPy具有強(qiáng)大的數(shù)組處理與矩陣運(yùn)算能力,除此之外,NumPy還內(nèi)建了大量的函數(shù),方便你快速構(gòu)建數(shù)學(xué)模型。NumPy通常與SciPy(ScientificPython)和Matplotlib(繪圖庫(kù))一起使用,這種組合廣泛用于替代MatLab,有助于我們通過(guò)Python學(xué)習(xí)數(shù)據(jù)科學(xué)或者機(jī)器學(xué)習(xí)。2.4Python編程基礎(chǔ)——常用的Python包Matplotlib數(shù)據(jù)繪圖Matplotlib是一個(gè)Python2D繪圖庫(kù),它以多種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版物質(zhì)量的圖形。Matplotlib可用于Python腳本,Python和IPython(opensnewwindow)Shell、Jupyter(opensnewwindow)筆記本,Web應(yīng)用程序服務(wù)器和四個(gè)圖形用戶界面工具包。Matplotlib嘗試使容易的事情變得更容易,使困難的事情變得可能。您只需幾行代碼就可以生成圖表、直方圖、功率譜、條形圖、誤差圖、散點(diǎn)圖等。為了簡(jiǎn)單繪圖,該pyplot模塊提供了類似于MATLAB的界面,尤其是與IPython結(jié)合使用時(shí)。對(duì)于高級(jí)用戶,您可以通過(guò)面向?qū)ο蟮慕缑婊騇ATLAB用戶熟悉的一組功能來(lái)完全控制線型,字體屬性,軸屬性等。2.4Python編程基礎(chǔ)——常用的Python包PandasPandas是Python語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),用于數(shù)據(jù)分析。它是一個(gè)開(kāi)放源碼、BSD許可的庫(kù),提供高性能、易于使用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。P
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級(jí)下冊(cè)數(shù)學(xué)教學(xué)工作計(jì)劃進(jìn)度安排
- 《研究生單招復(fù)習(xí)題》課件
- 《園林及植物配置》課件
- 藝術(shù)場(chǎng)館經(jīng)濟(jì)效益評(píng)估-洞察分析
- 眼眶減壓術(shù)研究-洞察分析
- 塑料原料供應(yīng)風(fēng)險(xiǎn)應(yīng)對(duì)-洞察分析
- 語(yǔ)義相似度度量模型-洞察分析
- 虛擬現(xiàn)實(shí)手術(shù)模擬-第2篇-洞察分析
- 隱私保護(hù)增強(qiáng)學(xué)習(xí)-洞察分析
- 虛擬環(huán)境下的保險(xiǎn)理賠調(diào)查-洞察分析
- 承壓設(shè)備事故及處理課件
- 煤層氣現(xiàn)場(chǎng)監(jiān)督工作要點(diǎn)
- 工會(huì)經(jīng)費(fèi)收支預(yù)算表
- 舒爾特方格55格200張?zhí)岣邔W⒘4紙直接打印版
- 質(zhì)量管理體系各條款的審核重點(diǎn)
- 聚丙烯化學(xué)品安全技術(shù)說(shuō)明書(shū)(MSDS)
- BBC美麗中國(guó)英文字幕
- 衛(wèi)生院工程施工組織設(shè)計(jì)方案
- CDR-臨床癡呆評(píng)定量表
- 《八年級(jí)下學(xué)期語(yǔ)文教學(xué)個(gè)人工作總結(jié)》
- 鋁合金門窗制作工藝卡片 - 修改
評(píng)論
0/150
提交評(píng)論