《人工智能》課件第3章 Python編程簡介_第1頁
《人工智能》課件第3章 Python編程簡介_第2頁
《人工智能》課件第3章 Python編程簡介_第3頁
《人工智能》課件第3章 Python編程簡介_第4頁
《人工智能》課件第3章 Python編程簡介_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第3章Python編程簡介主要內(nèi)容Python簡介IPython及其使用數(shù)據(jù)結構程序控制腳本輸入、輸出與可視化Python簡介WhyPythonPythonispowerful...andfast;playswellwithothers;runseverywhere;isfriendly&easytolearn;isOpen.ThesearesomeofthereasonspeoplewhousePythonwouldrathernotuseanythingelse.--https:///about/下載/downloads/LookingforPythonwithadifferentOS?Pythonfor

Windows,

Linux/UNIX,

MacOSX,

Other.Python簡介包管理——PyPI查看pip版本(一般自帶)pip–version安裝pippython-mensurepip--default-pip或者下載

get-pip.py,并執(zhí)行pythonget-pip.py確保安裝工具版本最新python-mpipinstall--upgradepipsetuptoolswheelPython簡介包管理——PyPI安裝Toinstallthelatestversionof“SomeProject”:pipinstall"SomeProject"Toinstallaspecificversion:pipinstall"SomeProject==1.4"Toinstallgreaterthanorequaltooneversionandlessthananother:pipinstall"SomeProject>=1,<2"Toinstallaversionthat’s

“compatible”

withacertainversion:

4pipinstall"SomeProject~=1.4.2"Inthiscase,thismeanstoinstallanyversion“==1.4.*”versionthat’salso“>=1.4.2”.Python簡介包管理——PyPI安裝Installfromanalternateindexpipinstall--index-urlhttp://my.package.repo/simple/SomeProject更新pipinstall--upgradeSomeProjectPython簡介Anaconda一個開源的Python發(fā)行版/清華大學開源軟件鏡像站https:///anaconda/archive/包含了conda、Python等180多個科學包及其依賴項WinpythonWindows下的一個Python發(fā)行版Python簡介IDE(IntegratedDevelopmentEnvironment)PyCharmhttps:///pycharm/download/JuPyter/IPythonNotebookAnaconda自帶SpyderWinpython、Anaconda自帶IDLEWinpython、anaconda自帶……IPython及其使用IPython控制臺IPython是一個交互式Python開發(fā)環(huán)境。主要的Python開發(fā)環(huán)境,例如Anaconda等,都包含了IPython。用戶可以利用其方便地進行開發(fā)?!狿ython3.4.4(v3.4.4:737efcadf5a6,Dec202015,20:20:57)[MSCv.160064bit(AMD64)]Type"copyright","credits"or"license"formoreinformation.IPython5.8.0--AnenhancedInteractivePython.?->IntroductionandoverviewofIPython'sfeatures.%quickref->Quickreference.help->Python'sownhelpsystem.object?->Detailsabout'object',use'object??'forextradetails.In[1]:——————————————————————————————————————————————IPython及其使用語句與表達式a=5程序由一系列這樣的擁有不同功能的語句構成,從而可以執(zhí)行各種復雜的操作。表達式由常量(如‘5’)、變量名(如‘a(chǎn)’,每個變量都有自己的變量名)和操作符(如‘=’,代表賦值)和函數(shù)(實現(xiàn)定義好的可以完成一系列操作的功能模塊,有名字,即函數(shù)名,可以通過函數(shù)名調(diào)用)。IPython及其使用語句與表達式(1)常量Python支持整型、浮點型、復數(shù)、布爾型、字符串、列表等不同數(shù)據(jù)類型。某個數(shù)據(jù)的值如果是顯式給出的,就是常量,如‘23’,‘12.12’,‘2+3j’,‘True’或‘False’,‘PythonforAI’等等。常量可被用于賦值、計算、比較等不同操作,但常量本身的值不能被改變。(2)變量在程序執(zhí)行過程中其值可以變化的量是變量。每個變量都有變量名,用來在程序中引用變量。變量命名必須遵循一定的規(guī)則,例如不能以數(shù)字開頭,不能有空格和句點,不能使用Python中的保留字,例如‘from’、‘import’、‘if’、‘for’、‘print’等,而且Python中變量名是大小寫敏感的。變量可以被賦值,但是常量不能被賦值。IPython及其使用語句與表達式(3)算術操作Python支持加減乘除和冪運算等算術運算,分別使用+,-,*,/和**等運算符。IPython及其使用語句與表達式(4)注釋Python支持兩類注釋,分別面向行的和面向程序塊。‘#’用于行注釋,若代碼中出現(xiàn)‘#’,其后的內(nèi)容即為注釋內(nèi)容,不被解釋器解釋執(zhí)行。一對三個單引號組(’’’)或者雙引號組(”””)把括在其中的行進行注釋。IPython及其使用語句與表達式(5)函數(shù)當實現(xiàn)某一特定功能的代碼在程序中要多次使用時,可以定義函數(shù)。當程序中需要實現(xiàn)該功能時調(diào)用這個函數(shù)就可以了。一個函數(shù)的結構函數(shù)的定義主要包括三部分,函數(shù)名、函數(shù)體和返回值。IPython及其使用語句與表達式(5)函數(shù)IPython及其使用語句與表達式(5)錯誤信息程序會有語法或者邏輯上的錯誤,因此錯誤信息提示對程序員很重要。Python有警告(Warning)和錯誤(Error)兩類錯誤信息。警告一般不影響程序運行,但錯誤會導致程序無法繼續(xù)運行。IPython及其使用模塊Python有健全的開原生態(tài)系統(tǒng)支撐。有大量功能豐富、強大的軟件庫(例如數(shù)值計算庫NumPy、科學計算庫SciPy,繪圖庫Matplotlib等)。這些程序以模塊的形式提供并被使用使用時,需要使用‘import’等關鍵字導入。IPython及其使用模塊Importnumpy只是導入numpy包,要調(diào)用其中的開方函數(shù)需要使用numpy.sqrt()??梢岳藐P鍵字‘a(chǎn)s’給包起一個別名,例如其中的‘np’。也可以指定要導入的函數(shù),例如‘fromnumpyimportsqrt,exp’,即導入其中的開放函數(shù)sqrt()和底為自然對數(shù)的冪函數(shù)exp(),這時就不需要指出包名或者其別名,而直接調(diào)用即可。In[16]:importnumpyIn[17]:numpy.sqrt(4)Out[17]:2.0In[18]:importnumpyasnpIn[19]:np.sqrt(4)Out[19]:2.0In[20]:fromnumpyimportsqrt,expIn[21]:sqrt(4)Out[21]:2.0In[22]:exp(3)Out[22]:20.085536923187668數(shù)據(jù)結構程序中的數(shù)據(jù)以一定的方式被組織在一起。常見的數(shù)據(jù)結構包括對象,列表和數(shù)組。對象對象是數(shù)據(jù)和函數(shù)的組合體,數(shù)據(jù)用來表征對象的靜態(tài)屬性,簡稱屬性;函數(shù)用來表征對象的動態(tài)屬性,例如屬于對象的各類操作,一般稱為方法。In[33]:f=3.14In[34]:f.is_integer()Out[34]:False

In[35]:s='Thisisastring.'In[36]:s.upper()Out[36]:'THISISASTRING.'數(shù)據(jù)結構列表列表(List)是一系列對象的有序集合??梢詫⑷我庖粋€對象集合使用方括號括起來,創(chuàng)建一個列表對象。In[3]:l=[3.14,4,2+1j,'c','string',[1,2,3]]In[4]:l[0]Out[4]:3.14In[5]:l[1]Out[5]:4In[6]:l[2]Out[6]:(2+1j)In[7]:l[3]Out[7]:'c'In[8]:l[4]Out[8]:'string'In[9]:l[5]Out[9]:[1,2,3]In[10]:l[5][1]Out[10]:2In[11]:l[2:4]Out[11]:[(2+1j),'c']In[12]:l[-1]Out[12]:[1,2,3]In[13]:l[3:]Out[13]:['c','string',[1,2,3]]數(shù)據(jù)結構列表列表對象的函數(shù)

序號方法說明1list.append(x)將一個元素追加到列表的結尾。2list.extend(L)將一個給定列表中的所有元素都追加到另一個列表中。3list.insert(i,x)在指定位置I插入一個元素x。4list.remove(x)刪除列表中值為x的第一個元素。5list.pop([i])從列表的指定位置刪除元素,并將其返回。6list.clear()從列表中刪除所有元素。7list.count(x)返回x在列表中出現(xiàn)的次數(shù)。8list.index(x)返回列表中第一個值為x的元素的索引。9list.sort()列表中的元素進行排序。10list.reverse()列表元素倒排序。11list.copy()返回列表的一個拷貝。數(shù)據(jù)結構數(shù)組Python并沒有內(nèi)置專門的數(shù)組類型,但是數(shù)組在數(shù)值計算和人工智能領域應用非常廣泛,因此NumPy包提供了數(shù)組類型及相應的高效操作。為了使用數(shù)組,需要導入numpy模塊

。(1)創(chuàng)建數(shù)組數(shù)組一般由相同類型的一組數(shù)組成,其中的每個數(shù)稱為元素(Entry),數(shù)組可以是一維的,也可以是高維的。In[1]:importnumpyasnpIn[8]:a=np.zeros(5)In[9]:aOut[9]:array([0.,0.,0.,0.,0.])In[10]:a=np.zeros([2,4])In[11]:aOut[11]:array([[0.,0.,0.,0.],[0.,0.,0.,0.]])In[14]:a=a=np.zeros([2,3,4])In[15]:aOut[15]:array([[[0.,0.,0.,0.],[0.,0.,0.,0.],[0.,0.,0.,0.]],[[0.,0.,0.,0.],[0.,0.,0.,0.],[0.,0.,0.,0.]]])數(shù)據(jù)結構數(shù)組(2)數(shù)組元素賦值利用NumPy包中的array()、arange()和linspace()等函數(shù)進行賦值。In[18]:a=np.array([1.57,3.14,6.28])In[19]:aOut[19]:array([1.57,3.14,6.28])

In[20]:b=np.array([[1.57,3.14,6.28],[0.5,1.,2.]])In[22]:bOut[22]:array([[1.57,3.14,6.28],[0.5,1.,2.]])數(shù)據(jù)結構數(shù)組(2)數(shù)組元素賦值利用NumPy包中的array()、arange()和linspace()等函數(shù)進行賦值。In[24]:a=np.arange(0,5,0.5)In[25]:aOut[25]:array([0.,0.5,1.,1.5,2.,2.5,3.,3.5,4.,4.5])In[30]:a=np.linspace(0,5,10)

In[31]:aOut[31]:array([0.,0.55555556,1.11111111,1.66666667,2.22222222,2.77777778,3.33333333,3.88888889,4.44444444,5.])數(shù)據(jù)結構數(shù)組(3)數(shù)組元素訪問可以通過指定索引的方式訪問,Python中,索引值從0開始。In[32]:a=np.array([[1.57,3.14,6.28],...:[0.5,1.,2.]])In[33]:a[0]Out[33]:array([1.57,3.14,6.28])In[34]:a[0,1]Out[34]:3.14In[35]:a[1,2]Out[35]:2.0In[36]:a[0,2]=9.52數(shù)據(jù)結構數(shù)組(3)數(shù)組元素訪問數(shù)組切片用于從數(shù)組中抽取出多個元素,語法為a[起始索引:終止索引:步長]。切片操作既可以用于一維數(shù)組,也可以應用于高維數(shù)組。In[67]:a=np.arange(0,10,1)In[68]:aOut[68]:array([0,1,2,3,4,5,6,7,8,9])In[69]:a[2:8:2]Out[69]:array([2,4,6])In[70]:a[:5]Out[70]:array([0,1,2,3,4])a[5:]Out[71]:array([5,6,7,8,9])數(shù)據(jù)結構數(shù)組(4)數(shù)組整體操作利用hstack()和vstack()函數(shù),可以實現(xiàn)兩個數(shù)組可以水平或者垂直堆疊。ravel()和flatten()方法可以將高維數(shù)組重新打包成一維數(shù)組。reshape()函數(shù)可以在數(shù)組元素個數(shù)相同的情形下改變數(shù)組的形狀。程序控制分支結構程序結構程序的分支結構一般包括兩部分,即條件判斷語句和可能的執(zhí)行語句。主要的語句形式是‘if…elif…else…’。In[3]:if(a>=1.0):...:print('Neuronisactivated.')...:elif(a>=0.5&a<1.0):...:print('Neuronislikelyactivated.')...:else:...:print('Neuronisnotactivated.')...:Neuronisactivated.

In[4]:aOut[4]:1.067847591054833In[9]:if(a>=1):...:print('Neuronisactivated.')...:In[10]:aOut[10]:0.006986772989221901In[16]:if(a>=1):...:print('Neuronisactivated.')...:else:...:print('Neuronisnotactivated.')...:Neuronisnotactivated.程序控制分支結構(2)條件表達式和布爾型數(shù)據(jù)類型進行跟在‘if’和‘elif’后括號里進行條件判斷的語句主要由條件表達式組成。條件表達式返回一個布爾值‘True’(真)或‘False’(假),表示條件滿足與否。序號運算符使用含義1==a==b如果a和b相等,返回‘True’,否則返回‘False’2!=a!=b如果a和b不相等,返回‘True’,否則返回‘False’3>

a>b如果a大于b,返回‘True’,否則返回‘False’4>=a>=b如果a大于等于b,返回‘True’,否則返回‘False’5<

a<b如果a小于b,返回‘True’,否則返回‘False’6<=a<=b如果a小于等于b,返回‘True’,否則返回‘False’程序控制分支結構程序結構程序的分支結構一般包括兩部分,即條件判斷語句和可能的執(zhí)行語句。主要的語句形式是‘if…elif…else…’。In[3]:if(a>=1.0):...:print('Neuronisactivated.')...:elif(a>=0.5&a<1.0):...:print('Neuronislikelyactivated.')...:else:...:print('Neuronisnotactivated.')...:Neuronisactivated.

In[4]:aOut[4]:1.067847591054833In[9]:if(a>=1):...:print('Neuronisactivated.')...:In[10]:aOut[10]:0.006986772989221901In[16]:if(a>=1):...:print('Neuronisactivated.')...:else:...:print('Neuronisnotactivated.')...:Neuronisnotactivated.程序控制循環(huán)結構循環(huán)結構一般也有循環(huán)條件和循環(huán)體兩部分構成。Python支持兩種類型的循環(huán),分別是for循環(huán)和while循環(huán)。for循環(huán)foreleinrange(0,5,1):...:b=ele**3+1...:print(ele,b)...:

(0,1)(1,2)(2,9)(3,28)(4,65)In[4]:a=np.arange(0,3,0.5)

In[5]:foreleina:...:b=ele**3+1...:print(ele,b)...:(0.0,1.0)(0.5,1.125)(1.0,2.0)(1.5,4.375)(2.0,9.0)(2.5,16.625)程序控制循環(huán)結構while循環(huán)i=0

while(i*i<=25):print(i,i*i)i=i+1

(0,0)(1,1)(2,4)(3,9)(4,16)(5,25)腳本腳本設計為了能夠重用,需要將代碼保存起來。保存起來的擁有比較完整功能的代碼,就是程序。Python程序是解釋執(zhí)行的,因此一般被稱為腳本。腳本文件一般使用擴展名‘.py’。腳本腳本設計一個腳本的例子#-*-coding:utf-8-*-#ch03\\BubbleSort.py#冒泡排序list=[8,1,2,66,5,123]defBubbleSort():foriinrange(len(list)):forjinrange(i):iflist[j]>list[j+1]:list[j],list[j+1]=list[j+1],list[j]returnlist

print("冒泡排序")list=BubbleSort()print(list)腳本腳本執(zhí)行保存的代碼可以使用多種方式執(zhí)行。在IPython控制臺中,可以使用%run命令執(zhí)行保存的純文本的Python腳本。也可以直接調(diào)用解釋器程序執(zhí)行。In[5]:%run"d:\\AI\\ch03\\BubbleSort.py"冒泡排序[1,2,5,8,66,123]D:\AI>python3.\BubbleSort.py冒泡排序[1,2,5,8,66,123]$python3./BubbleSort.py冒泡排序[1,2,5,8,66,123]輸入、輸出與可視化輸入輸出為了能夠永久保存程序、數(shù)據(jù)等,計算機系統(tǒng)將這些信息按一定方式組織起來進行存儲,稱之為文件。Python中,文件使用一般包括三個步驟,即打開,使用(讀取或者寫入)和關閉。輸入、輸出與可視化輸入輸出打開文件In[5]:f=open('ex01.csv','r')In[6]:fOut[6]:<openfile'ex01.csv',mode'r'at0x0000000002F370C0>In[8]:Out[8]:'ex01.csv'In[9]:f.modeOut[9]:'r'In[10]:f.closedOut[10]:False輸入、輸出與可視化輸入輸出取文件In[11]:st=f.read()In[12]:stOut[12]:'1,2,3,4,Hello\n5,6,7,8,World\n9,10,11,12,Foo\n'In[13]:st=f.read()In[14]:stOut[14]:''f.seek(0,0)In[22]:st=f.read(20)In[23]:stOut[23]:'1,2,3,4,Hello\n5,''In[24]:f.seek(0,0)In[25]:st=f.readline()In[26]:stOut[26]:'1,2,3,4,Hello\n'輸入、輸出與可視化輸入輸出關閉文件寫文件In[27]:f.close()In[28]:f.closedOut[28]:TrueIn[34]:f=open('ex02.csv','w')In[35]:f.write('1,2,3\nWriteexample.')In[36]:!typeex02.csv

In[37]:f.close()In[38]:!typeex02.csv1,2,3Writeexample.輸入、輸出與可視化可視化繪圖是數(shù)據(jù)分析的重要的任務之一,圖像可以直觀地反映變化趨勢、分布規(guī)律和相互關系等,因此經(jīng)常需要將數(shù)據(jù)以圖形化的方式展示。Python沒有內(nèi)置繪圖函數(shù),但Matplotlib包的PyPlot模塊提供了豐富的繪圖函數(shù)。In[32]:importmatplotlib.pyplotaspltIn[49]:n_point=10In[50]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論