Python程序設計項目化教程- 課件 項目九 鳶尾花數據集分析-numpy_第1頁
Python程序設計項目化教程- 課件 項目九 鳶尾花數據集分析-numpy_第2頁
Python程序設計項目化教程- 課件 項目九 鳶尾花數據集分析-numpy_第3頁
Python程序設計項目化教程- 課件 項目九 鳶尾花數據集分析-numpy_第4頁
Python程序設計項目化教程- 課件 項目九 鳶尾花數據集分析-numpy_第5頁
已閱讀5頁,還剩47頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目九鳶尾花數據集分析——numpytextbook教材Python程序設計項目化教程孫海洋

編著

電子工業出版社ISBN:9787121477546項目描述【項目描述】下載鳶尾花數據集,并對其進行分析,統計缺失值及相關特征,篩選符合條件的相關樣本。Contents目錄01.numpy概覽—常見數組操作02.讀取文件—loadtxt函數03.寫入文件—savetxt函數04.實現數學公式—數學與統計函數05.項目實施06.項目小結PartOnenumpy概覽—常見數組操作了解并安裝numpy創建numpy數組并掌握常見屬性和操作函數【任務描述】介紹使用numpy創建各種數組的方法,掌握numpy數組屬性和常見操作函數。numpy介紹1.概念numpy(NumericalPython)是開源的Python科學計算庫,使用numpy可高效地處理數組和矩陣,并提供了大量的數學和統計函數。同時,numpy也是學習pandas、機器學習和深度學習的重要基礎。2.安裝pipinstallnumpy3.array函數【定義格式】array(object,dtype=None,*,copy=True,order='K',subok=False,ndmin=0,like=None)4.numpy

屬性ndim(維度)、shape(形狀)、size(數組大小或元素個數)、dtype(元素類型)和itemsize(每個元素的大小)創建numpy數組—array函數【定義格式】array(object,dtype=None,*,copy=True,order='K',subok=False,ndmin=0,like=None)參

數參

明object必需的輸入,可以是多種類型,用于創建數組。如果輸入是標量,則創建0維數組。dtype可選參數,用于指定數組的數據類型。如果不指定,將根據輸入數據自動推斷最小所需類型。copy可選參數,布爾值,默認為True,決定是否復制輸入對象的數據到新數組。order{'K','A','C','F'},可選參數,指定數組的存儲方式,可以是'K'(保持原順序)、'A'(任意)、'C'(C語言順序,行主序)、'F'(Fortran順序,列主序)。默認為'K'。subok可選參數,布爾值,如果為True,則允許返回數組的子類實例。默認為False,返回基礎數組類。ndmin可選參數,int型,指定結果數組的最小維度數。like可選參數,如果提供,允許創建與給定數組類似的數組,但不必是NumPy數組。創建numpy數組—array函數通過一維列表或元組創建一維numpy數組。通過二維列表或元組創建二維numpy數組。運行結果:運行結果:創建numpy數組—array函數通過ndmin參數可生成指定維度的數組。通過dtype參數可指定數組元素類型。運行結果:運行結果:創建numpy數組—array函數類型提升,若元素中含有字符串,通常其他元素也自動提升為字符串型。類型提升,若數值型元素中含有浮點型,則其他元素也自動提升為浮點型。運行結果:運行結果:<U11中的<為小端表示法,U11表示長度為11的字符串型numpy特殊數組的創建1.全零數組—zeros函數【格式】zeros(shape,dtype=float,order='C',*,like=None)【示例1】使用zeros函數生成一維全零數組。運行結果如下:numpy特殊數組的創建【示例2】使用zeros函數生成2行3列的二維全零數組。運行結果如下:【說明】以此類推,np.zeros((2,3,4))將生成如下三維全零數組。numpy特殊數組的創建2.全一數組—ones函數【格式】ones(shape,dtype=None,order='C',*,like=None)【示例1】使用ones函數生成含5個元素的一維全一數組,數組元素為整型。運行結果如下:numpy特殊數組的創建【示例2】使用ones函數生成含3行4列的二維全一數組,數組元素為整型。運行結果如下:numpy特殊數組的創建3.填充值數組—full函數【格式】full(shape,fill_value,dtype=None,order='C',*,like=None)【函數功能】返回一個給定形狀和類型的新數組,原始值用“fill_value”填充。【示例1】分析如下代碼,輸出其運行結果。運行結果如圖:(2,3)指定了數組的形狀為2行3列,5是填充數組的值numpy特殊數組的創建【分析】fill_value填充值為一維列表[1,2,3],形狀為2行3列,要求形狀的列數與類數組的列數(一維列表的元素個數)相同,即把類數組重復2行。【示例2】分析如下代碼,輸出其運行結果。運行結果如圖:numpy特殊數組的創建4.eye數組—eye函數【格式】eye(N,M=None,k=0,dtype=<class'float'>,order='C',*,like=None)【函數功能】返回一個對角線上為1、其他位置為0的二維數組。【分析】k是對角線索引:0(默認),表示主對角線,正值表示上對角線,負值表示下對角線。N和M分別表示輸出的行數和列數。【示例1】使用eye函數生成如下numpy矩陣。【分析】方陣,故N=3,而M=3或省略;主對角線為1,故k=0或省略。numpy特殊數組的創建【參考代碼1】【參考代碼2】【示例2】使用eye函數生成如下numpy矩陣。【分析】值全為1的對角線是相對于主對角線向上平移了2個單位,故k=2。運行結果如圖:numpy特殊數組的創建5.等差數列數組—arange函數【定義格式】arange([start,]stop[,step,],dtype=None,*,like=None)區間的起點(包含),默認為0。步長(間隔),默認為1。區間的終點(不包含)(1)arange(stop):在左閉右開的區間[0,stop)中,按步長step=1生成等差數列值對應的數組。(2)arange(start,stop):在左閉右開的區間[start,stop)中,按步長step=1生成等差數列值對應的數組。(3)arange(start,stop,step):在左閉右開的區間[start,stop)中,按指定步長值step生成等差數列值對應的數組。numpy特殊數組的創建【示例1】分析如下代碼,輸出其運行結果。運行結果如圖:表示生成從0開始到3(不包括3)的整數序列,步長默認為1。numpy特殊數組的創建【示例2】分析如下代碼,輸出其運行結果。【示例3】分析如下代碼,輸出其運行結果。運行結果如圖:運行結果如圖:表示生成從3開始到7(不包括7)的整數序列,步長為1。表示生成從3開始到9(不包括9)的整數序列,步長為2。numpy特殊數組的創建6.等差數列數組—linspace函數【定義格式】linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)整型,要生成的樣本數,默認為50默認值為True。若為True,則“stop”是最后一個樣點;否則,不包括在內。默認False。如果為True,同時返回numpy數組和數組元素間隔組成的元組('samples','step'),其中'step'是樣點之間的間距。輸出數組的類型該參數用來指定在哪個軸上用linspacenumpy特殊數組的創建【示例1】分析以下代碼,輸出其運行結果。【分析】在[2.0,3.0]閉區間內生成等間隔的5個浮點數對應的numpy數組。運行結果如圖:【示例2】分析以下代碼,輸出其運行結果。numpy特殊數組的創建【分析】當retstep為True時,同時返回numpy的ndarray數組和數組元素間隔組成的元組('samples','step'),其中'step'是元素之間的間距運行結果如圖:【分析】num=5表示生成的序列中數字的個數為5,不包括區間的結束點。endpoint=False參數表示不包括結束點在內,即3.0不會包含在生成的序列中。【示例3】分析以下代碼,輸出其運行結果。運行結果如圖:改變numpy數組形狀1.通過修改shape屬性值改變【調用格式】ndarr.shape=new_shape生成的是一維數組將一維數組變為四行五列運行結果如圖:改變numpy數組形狀2.通過reshape函數改變【調用格式】ndarr.reshape(new_shape)。其中,new_shape通常為整數、元組或列表形式。其功能為在不改變原數組的基礎上,返回指定形狀的新數組。【示例1】閱讀以下程序,輸出其運行結果。reshape()函數返回給定shape的數組副本b,不會修改原數組a。改變numpy數組形狀運行結果如下:改變numpy數組形狀3.通過resize函數改變【調用格式1】ndarr.resize(new_shape),功能為對原數組進行改變。【調用格式2】ndarr_new=numpy.resize(ndarr,new_shape),功能為在不改變原數組的基礎上,返回指定形狀的新數組。【示例1】閱讀以下程序,輸出其運行結果。利用a.resize(new_shape)改變原數組a改變numpy數組形狀運行結果如下:改變numpy數組形狀【示例2】閱讀以下程序,輸出其運行結果。運行結果:b=np.resize(a,new_shape)返回指定形狀的數組b,但數組a本身并不會改變。PartTwo讀取文件——loadtxt函數了解loadtxt加載函數靈活使用loadtxt函數【任務描述】靈活使用loadtxt函數讀取CSV及TXT文件。讀取文件—loadtxt

函數【定義格式】loadtxt(fname,dtype=<class'float'>,comments='#',delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding='bytes',max_rows=None,*,quotechar=None,like=None)。【功能】通常用于TXT及CSV文件的讀取。讀取文件—loadtxt函數參

數參

明fname必需的文件名或文件對象。dtype可選的數據類型,默認為浮點型(float)。comments可選的注釋標識符,默認為'#',表示以該字符開頭的行將被視為注釋。delimiter可選的字段分隔符,默認為空格。converters可選的轉換函數或字典,用于自定義數據解析。skiprows可選的跳過文件開頭的行數,默認為0。usecols可選的列索引序列,指定要讀取的列,默認讀取所有列。unpack可選的布爾值,如果為True,將返回一個解包的數組。ndmin可選的最小維度數,默認為0,表示結果至少是0維數組。encoding可選的文件編碼方式,默認為'bytes'。max_rows可選的讀取的最大行數,默認讀取所有行。quotechar可選的引用字符,用于處理CSV文件中的字符串,默認為None。like可選的參考數組,用于創建非NumPy數組的數組。任務實施【任務】假設在當前工作目錄下有文本文件stu.csv,內容如圖所示,使用loadtxt讀取文件并輸出其內容。【分析1】由于loadtxt函數默認dtype是float類型,而文件中的數據有字符串也有數值。若采用默認的dtype類型讀取文件,會導致讀取失敗并報錯,故把dtype改為str字符串類型。數據間隔符為逗號,即delimiter=','。運行結果:任務實施【分析2】如果跳過第一行,則skiprows=1。第1列“學號”即0列,若篩選“姓名”(1列)和“等級”(3列),則usecols=[1,3]。【分析3】若將當前工作目錄下的文本文件stu.csv改為stu.txt,在使用loadtxt讀取TXT文本文件時,encoding采用默認值,通常會報UnicodeDecodeError錯誤,可設置encoding='utf-8'。PartThree寫入文件—savetxt函數了解savetxt加載函數靈活使用savetxt函數【任務描述】靈活使用savext函數保存數據。寫入文件—savetxt函數【定義格式】savetxt(fname,X,fmt='%.18e',delimiter='',newline='\n',header='',footer='',comments='#',encoding=None,)。其功能為保存數組到txt文本文件。參

數參

明fname文件名或文件句柄。X一維或二維類數組,即要保存到文本文件中的數據。fmt格式format的英文縮寫,表示需要存儲的數據的格式,可以自行設置。delimiter加載分隔符,默認是空格。newline行分隔符,默認是換行符\n。header寫入文件開頭的字符串。footer寫入文件末尾的字符串。comments文中的注釋,與header使用,若未設置header參數,即使設置了comments參數也無效。encoding{None,str},設置輸出文件的編碼。任務實施1【任務1】使用savetxt函數把數值數組以整數形式存儲到當前目錄下的文本文件out1中,用空格作為間隔符。【分析】可使用numpy中的arange函數生成numpy一維數組,然后使用reshape函數將其轉換為二維數組。數據格式為整型,故fmt='%d'。數據間隔符為空格,即delimiter=''。運行結果如圖:任務實施2【任務2】把數值數組以小數點后3位的浮點數形式存儲到當前目錄下的文本文件out2中,用逗號作間隔符。文件開頭信息為“#以下是浮點數形式”。【分析】用numpy的linspace函數生成指定元素數量的numpy一維數組,通過shape屬性修改為3行3列的二維數組。保存數據格式為浮點型,保留小數點后3位,故fmt='%.3f'。數據間隔符為逗號,即delimiter=','。開頭信息使用header參數,comments默認是'#'運行結果如圖:任務實施3【任務】使用savetxt函數把數值數組以小數點后3位的科學計數法形式存儲到當前目錄下的文本文件out3中,用空格作為間隔符。文件開頭和結尾分別顯示“//這是header”及“//這是footer”【分析】使用ndarr.resize(new_shape)更改原數組ndarr的形狀。文件開頭和結尾的信息分別用header和footer參數指定,注釋符不再是默認的'#'了,故設置參數comments='//'。運行結果如圖:PartFour實現數學公式—數學與統計函數掌握numpy的常見數學函數掌握numpy的常見統計函數【任務描述】靈活使用numpy數學和統計函數解決實際問題。numpy模塊常見的數學函數函

數用

途add(x,y)

subtract(x,y)

multiply(x,y)

divide(x,y)數組對應元素的相加、減、乘、除sqrt(x)數組各元素的平方根square(x)數組各元素的平方exp(x)

exp2(x)數組各元素以e、2為底數的指數值random.rand(shape)根據給定形狀(維度)生成[0,1)之間的隨機數random.rand(m,n)生成m行n列的隨機數數組random.randn()返回一個或一組樣本,具有標準正態分布random.randn(m,n)返回m行n列的隨機標準正態數組random.randint(low,high=None,size=None,dtype=int)返回[low,high)范圍內的隨機整數,參數:low為最小值,high為最大值,size為數組維度大小,dtype為數據類型,默認為int。high未填寫時,默認生成隨機數的范圍是[0,low)random.choice(a,size=None,replace=True,p=None)從給定的一維數組生成隨機樣本a為一維數組類似數據或整數;size為數組維度;p為當數組中的數據出現的概率a為整數時,對應的一維數組為np.arange(a)numpy常見統計函數函

數用

途max

min最大和最小值mean平均值sum計算數組中元素的方差和標準差var

std

計算數組中元素的方差和標準差argmax

argmin返回數組中最大、最小元素的索引cumsumcumprod數組中所有元素的累加和累乘PartFive項目實施項目實施【步驟1】加載文件查看樣本設當前目錄下有鳶尾花數據集文件iris_data.txt,使用numpy中的loadtxt函數讀取,打印樣本數。iris_data.txt文件部分內容如圖所示:項目實施【步驟2】查看數據樣本數【分析】使用長度函數len查看數據文件的總行數,文件內容包含了表頭行,總行數減1即是數據樣本數。運行結果如圖:【步驟3】查看數據樣本的形狀【分析】使用numpy數組的shape屬性運行結果如圖:項目實施【步驟4】選擇除標題行之外的所有樣本數據【分析】采用切片,行標號從0開始,第2行標號為1,即d[1:]表示除首行之外的所有行。標題行之外的所有樣本部分數據如圖所示:項目實施【步驟5】統計山鳶尾setosa的樣本數量【分析】選擇數據集d1的最后一列,即d1[:,-1]→使用np.where函數找出所有分類為‘setosa’的樣本索引→將找到的索引保存到變量d2中→使用.size屬性確定d2[0]數組的長度,即山鳶尾樣本的數量→打印出山鳶尾樣本的數量。運行結果如圖:PartSix項目小結項目小結知

點示例說明numpy數組創建a=np.array([1,2,3,4,5])

#一維a=np.array([[1,2,3],[4,5,6]])

#二維參數可以為列表或元組numpy數組屬性ndim(維度)、shape(形狀)、size(數組大小或元素個數)、dtype(元素類型)和itemsize(每個元素的大小)

溫馨提示

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

評論

0/150

提交評論