版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
多維數(shù)據(jù)結(jié)構(gòu)與運算
多維數(shù)據(jù)結(jié)構(gòu)與運算
1多維數(shù)據(jù)計算數(shù)據(jù)分析的數(shù)據(jù)組織方式向量、矩陣高效計算NumPy庫提供了多維數(shù)組ndarray支持豐富數(shù)據(jù)表示方式Anaconda環(huán)境中已安裝>>>importnumpyasnpndarray:NumPy核心N-dimensionalarray,N維數(shù)組相同數(shù)據(jù)類型的元素組成的多維數(shù)組數(shù)組大小需事先指定多維數(shù)據(jù)計算數(shù)據(jù)分析的數(shù)據(jù)組織方式ndarray:NumP2案例2-1:學(xué)生課程考試成績5位同學(xué)參加了學(xué)業(yè)水平考試,考試科目共7門姓名MathEnglishPythonChineseArtDatabasePhysics王微70857790828489肖良英60648075809290方綺雯90938887869091劉旭陽80829188838680錢易銘88727890917380案例2-1:學(xué)生課程考試成績5位同學(xué)參加了學(xué)業(yè)水平考試,考試32.1.1一維數(shù)組對象創(chuàng)建一維數(shù)組分別保存學(xué)生姓名和考試科目,訪問數(shù)組元素np.array(),基于列表創(chuàng)建一維數(shù)組>>>names=np.array(['王微','肖良英','方綺雯','劉旭陽','錢易銘'])>>>namesarray(['王微','肖良英','方綺雯','劉旭陽','錢易銘',dtype='<U3')>>>subjects=np.array(['Math','English','Python','Chinese','Art','Database','Physics'])>>>subjectsarray(['Math','English','Python','Chinese','Art','Database','Physics'],dtype='<U8')2.1.1一維數(shù)組對象創(chuàng)建一維數(shù)組分別保存學(xué)生姓名和考試科4一維數(shù)組訪問數(shù)組特性>>>names.ndim#數(shù)組維度1>>>names.size#數(shù)組元素個數(shù)5>>>names.dtype#數(shù)組數(shù)據(jù)類型dtype('<U3')索引序號范圍為[0,n-1]或[-n,-1]n為數(shù)組大小與Python序列的索引使用方式一致>>>names[2]'方綺雯'>>>subjects[-3]'Art' >>>namesarray(['王微','肖良英','方綺雯','劉旭陽','錢易銘',dtype='<U3')>>>subjectsarray(['Math','English','Python','Chinese','Art','Database','Physics'],dtype='<U8')一維數(shù)組訪問數(shù)組特性>>>names.ndim#數(shù)組維5一維數(shù)組切片抽取數(shù)組的一部分元素生成新數(shù)組稱為切片操作直接以列表形式給出需要的元素索引外層括號表示元素訪問內(nèi)層括號表示列表>>>namesarray(['王微','肖良英','方綺雯','劉旭陽','錢易銘',dtype='<U3')>>>subjectsarray(['Math','English','Python','Chinese','Art','Database','Physics'],dtype='<U8')>>>subjects[[0,2,4]]#兩層括號,[0,2,4]為索引列表array(['Math','Python','Art'],dtype='<U8')索引也可表示為:start:end:step生成start~end-1,步長step的等差數(shù)列>>>names[1:4]#抽取索引為1、2、3的元素array(['肖良英''方綺雯''劉旭陽'],dtype='<U3')>>>subjects[:-1:2]#抽取索引為0、2、4的元素array(['Math','Python','Art'],dtype='<U8')start省略:從0開始end省略:到最后step省略:步長為1一維數(shù)組切片抽取數(shù)組的一部分元素生成新數(shù)組稱為切片操作外層括6根據(jù)條件篩選數(shù)組元素使用條件表達式和關(guān)系運算符篩選出names數(shù)組中值等于“王微”或“錢易銘”的元素>>>names[(names=='王微')|(names=='錢易銘')]array(['王微','錢易銘'],dtype='<U3')條件表達式:生成布爾型的數(shù)組>>>mask=(names=='王微')|(names=='錢易銘')>>>maskarray([True,False,False,False,True],dtype=bool)>>>names[mask]array(['王微''錢易銘'],dtype='<U3')'王微''肖良英''方綺雯''劉旭陽''錢易銘'TrueFalseFalseFalseTruenamesmasknames[mask]array(['王微‘,'錢易銘']根據(jù)條件篩選數(shù)組元素使用條件表達式和關(guān)系運算符>>>nam72.1.2二維數(shù)組對象使用array函數(shù)創(chuàng)建二維ndarray數(shù)組對象初始化的列表,其元素也是列表創(chuàng)建二維數(shù)組scores,記錄“names”中同學(xué)“subjects”的各門課程考試成績>>>scores=np.array([[70,85,77,90,82,84,89],[60,64,80,75,80,92,90],[90,93,88,87,86,90,91],[80,82,91,88,83,86,80],[88,72,78,90,91,73,80]])>>>scoresarray([[70,85,77,90,82,84,89],[60,64,80,75,80,92,90],[90,93,88,87,86,90,91],[80,82,91,88,83,86,80],[88,72,78,90,91,73,80]])一行數(shù)據(jù)2.1.2二維數(shù)組對象使用array函數(shù)創(chuàng)建二維ndarr8訪問二維數(shù)組元素數(shù)組特性>>>scores.ndim#數(shù)組維數(shù)2>>>scores.size#數(shù)組元素總數(shù),行×列35>>>scores.shape#數(shù)組的行數(shù)和列數(shù)(5,7)>>>scores.dtype#數(shù)組元素的類型dtype('int32')二維數(shù)組切片操作的基本格式:arr[row,column]row行序號,column列序號,中間用‘,’隔開行、列切片的表示方式與一維數(shù)組相同用“:”代替行或列,表示選中對應(yīng)的所有行或列訪問二維數(shù)組元素數(shù)組特性>>>scores.ndim#9二維數(shù)組切片訪問指定行、列的元素,給出行和列兩個索引值>>>scores[1,0]60>>>scores[[1,3],[0,1]]array([60,82])>>>scores[[1,3]]array([[60,64,80,75,80,92,90],[80,82,91,88,83,86,80]])取某行所有列值,可以省略列:抽取scores[1,0],scores[3,1]>>>scores[:,[0,1]]array([[70,85],[60,64],[90,93],[80,82],[88,72]])抽取部分列,行不能省略>>>scores[[0,3],1:4]array([85,77,90][82,91,88,])>>>scores[[1,3]][:,[0,1]]array([[60,64],[80,82]])抽取1、3行中0、1列數(shù)據(jù),兩層切片二維數(shù)組切片訪問指定行、列的元素,給出行和列兩個索引值>>>10條件篩選使用布爾型數(shù)組篩選訪問其他數(shù)組的元素>>>scores[(names=='肖良英')|(names=='方綺雯'),:]array([[60,64,80,75,80,92,90],[90,93,88,87,86,90,91]])行篩選,names的長度
和scores的行數(shù)一致>>>scores[(names=='肖良英')|(names=='方綺雯')][:,(subjects=='Math')|(subjects=='Python')]array([[60,80],[90,88]])選擇“肖良英”和“方綺雯”的“Math”和“Python”課程成績,可以使用兩層篩選實現(xiàn)第一層篩選后的所有行,2行條件篩選使用布爾型數(shù)組篩選訪問其他數(shù)組的元素>>>scor11思考與練習(xí)1.一維數(shù)組訪問。在subjects數(shù)組中選擇并顯示序號1、2、4門課的名稱,使用負值序號選擇并顯示names數(shù)組中'方綺雯'。選擇并顯示names數(shù)組從2到最后的數(shù)組元素;選擇并顯示subjects數(shù)組2到4的數(shù)組元素。使用布爾條件選擇并顯示subjects數(shù)組中的英語和物理科目名稱。2.二維數(shù)組訪問。選擇并顯示scores數(shù)組的1、4行。選擇并顯示scores數(shù)組中行號2、4同學(xué)的數(shù)學(xué)和Python成績。選擇并顯示scores數(shù)組中所有同學(xué)的數(shù)學(xué)和藝術(shù)課程成績。選擇并顯示scores數(shù)組中“王微”和“劉旭陽”的英語和藝術(shù)課程成績。3.生成由整數(shù)10~19組成的2×5的二維數(shù)組。思考與練習(xí)1.一維數(shù)組訪問。12創(chuàng)建多維數(shù)組的常用方法arange()>>>np.arange(0,11)array([0,1,2,3,4,5,6,7,8,9,10])>>>np.arange(3,11,2)array([3,5,7,9])>>>np.arange(0.3,1.5,0.3)array([0.3,0.6,0.9,1.2])reshape()將一維數(shù)組轉(zhuǎn)換為指定的多維數(shù)組arange可以生成浮點數(shù)列>>>np.arange(0,15).reshape(3,5)array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])zeros()、ones()>>>np.zeros((3,4))array([[0.,0.,0.,0.],[0.,0.,0.,0.],[0.,0.,0.,0.]])>>>np.ones((4,3))array([[1.,1.,1.],[1.,1.,1.],[1.,1.,1.],[1.,1.,1.]])創(chuàng)建多維數(shù)組的常用方法arange()>>>np.arang132.2多維數(shù)組運算基本算數(shù)運算函數(shù)運算2.2多維數(shù)組運算基本算數(shù)運算14二維數(shù)組與標(biāo)量運算為所有同學(xué)的所有課程成績增加5分。>>>scores+5array([[75,90,82,95,87,89,94], [65,69,85,80,85,97,95],[95,98,93,92,91,95,96],[85,87,96,93,88,91,85],[93,77,83,95,96,78,85]])等價于>>>a=np.ones((5,7))*5>>>aarray([[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.]])>>>scores+aarray([[75.,90.,82.,95.,87.,89.,94.],[65.,69.,85.,80.,85.,97.,95.],[95.,98.,93.,92.,91.,95.,96.],[85.,87.,96.,93.,88.,91.,85.],[93.,77.,83.,95.,96.,78.,85.]])二維數(shù)組與標(biāo)量運算為所有同學(xué)的所有課程成績增加5分。>>>15二維數(shù)組與一維數(shù)組運算每個科目基礎(chǔ)分不同,為各科目增加相應(yīng)的基礎(chǔ)分。>>>bonus=np.array([3,4,5,3,6,7,2])>>>scores+bonusarray([[73,89,82,93,88,91,91],[63,68,85,78,86,99,92],[93,97,93,90,92,97,93],[83,86,96,91,89,93,82],[91,76,83,93,97,80,82]])修改選定數(shù)據(jù)>>>scores[names=='肖良英',subjects=='English']array([64])>>>scores[names=='肖良英',subjects=='English']+5array([69])二維數(shù)組與一維數(shù)組運算每個科目基礎(chǔ)分不同,為各科目增加相應(yīng)的16課后作業(yè)“大潤發(fā)”、“沃爾瑪”、“聯(lián)華”和“農(nóng)工商”四個超市都賣蘋果、香蕉、桔子、獼猴桃和芒果5種水果。使用NumPy的ndarray實現(xiàn)以下功能。創(chuàng)建2個一維數(shù)組分別存儲超市名稱和水果名稱;創(chuàng)建1個4×5的二維數(shù)組存儲不同超市的水果價格,其中價格由4到10范圍內(nèi)的隨機數(shù)生成;選擇“大潤發(fā)”的蘋果和“聯(lián)華”的香蕉,并將價格增加1元;“農(nóng)工商”水果大減價,所有水果價格減少2元;統(tǒng)計四個超市蘋果和芒果的銷售均價;找出桔子價格最貴的超市名稱(不是序號)。打包提交名為:“學(xué)號-姓名-Data-1.zip”課后作業(yè)“大潤發(fā)”、“沃爾瑪”、“聯(lián)華”和“農(nóng)工商”四個超市17多維數(shù)組運算-通用函數(shù)一元,1個輸入數(shù)組,返回1個數(shù)組函數(shù)描述abs、fabs計算整數(shù)、浮點數(shù)或復(fù)數(shù)的絕對值sqrt計算各元素的平方根square計算各元素的平方exp計算各元素的指數(shù)log、log10自然對數(shù)、底數(shù)為10的logsign計算各元素的正負號ceil計算各元素的ceiling值,即大于等于該值的最小整數(shù)floor計算各元素的floor值,即小于等于該值的最大整數(shù)cos、cosh、sinsinh、tan、tanh普通和雙曲型三角函數(shù)多維數(shù)組運算-通用函數(shù)一元,1個輸入數(shù)組,返回1個數(shù)組函數(shù)描18通用函數(shù)-二元2個輸入數(shù)組,返回1個數(shù)組函數(shù)描述add將數(shù)據(jù)中對應(yīng)的元素相加subtract從第一個數(shù)組中減去第二個數(shù)組中的元素multiply數(shù)組元素相乘divide數(shù)組對應(yīng)元素相除power對第一個數(shù)組中的元素A,根據(jù)第二個數(shù)組中的相應(yīng)元素B,計算ABmod元素級的求模運算copysign將第二個數(shù)組中的值的符號復(fù)制給第一個數(shù)組中的值equal,not_equal執(zhí)行元素級的比較運算,產(chǎn)生布爾型數(shù)組通用函數(shù)-二元2個輸入數(shù)組,返回1個數(shù)組函數(shù)描述add將數(shù)據(jù)19通用函數(shù)-實例將同學(xué)的考試成績轉(zhuǎn)換成整數(shù)形式的十分制分數(shù)為每個同學(xué)的分數(shù)減去3分>>>np.floor(scores/10)array([[7.,8.,7.,9.,8.,8.,8.],[6.,6.,8.,7.,8.,9.,9.],[9.,9.,8.,8.,8.,9.,9.],[8.,8.,9.,8.,8.,8.,8.],[8.,7.,7.,9.,9.,7.,8.]])>>>np.subtract(scores,3)array([[67,82,74,87,79,81,86],[57,61,77,72,77,89,87],[87,90,85,84,83,87,88],[77,79,88,85,80,83,77],[85,69,75,87,88,70,77]])通用函數(shù)-實例將同學(xué)的考試成績轉(zhuǎn)換成整數(shù)形式的十分制分數(shù)為每20聚合函數(shù)支持在行、列或者全體數(shù)組元素上的聚集函數(shù)函數(shù)描述sum求和mean算術(shù)平均值min、max最大值和最小值argmin、argmax最大值和最小值的索引cumsum從0開始向前累加各元素cumprod從1開始向前累乘各元素統(tǒng)計不同科目的成績總分>>>scores.sum(axis=0)#按列求和array([388,396,414,430,422,425,430])求“王微”所有課程成績的平均分查詢英語考試成績最高同學(xué)的姓名>>>scores[names=='王微'].mean()82.428571428571431>>>names[scores[:,subjects=='English'].argmax()]'方綺雯'聚合函數(shù)支持在行、列或者全體數(shù)組元素上的聚集函數(shù)函數(shù)描述su21隨機數(shù)組生成函數(shù)np.random模塊函數(shù)描述random隨機產(chǎn)生[0,1)之間的浮點值randint隨機生成給定范圍內(nèi)的一組整數(shù)uniform隨機生成給定范圍內(nèi)服從均勻分布的一組浮點數(shù)choice在給定的序列內(nèi)隨機選擇元素normal隨機生成一組服從給定均值和方差的正態(tài)分布隨機數(shù)隨機數(shù)組生成函數(shù)np.random模塊函數(shù)描述random隨22隨機數(shù)組生成函數(shù)-實例模塊生成由10個隨機整數(shù)組成的一維數(shù)組,整數(shù)的取值范圍從0到5randint(start,end,size)>>>np.random.randint(0,6,10)array([5,5,0,2,4,3,1,2,5,4])生成服從均值為0、方差為1的服從正態(tài)分布的4×5二維數(shù)組>>>np.random.normal(0,1,size=(4,5))array([[0.50293855,-0.65924346,1.10370417,0.97295644,-0.94182097],[-0.10743896,-0.62138498,-0.70710979,-0.31265519,-0.10357636],[1.32282187,0.91143092,-1.1728774,0.51703585,-1.38091545],[-2.02050138,-0.936194,1.47082363,1.73261098,-0.42447148]])隨機數(shù)組生成函數(shù)-實例模塊生成由10個隨機整數(shù)組成的一維數(shù)組23思考與練習(xí)1.將scores數(shù)組中所有同學(xué)的英語成績減去3分并顯示。2.統(tǒng)計scores數(shù)組中每名同學(xué)所有科目的平均分并顯示。3.使用隨機函數(shù)生成[-1,1]之間服從均勻分布的3×4二維數(shù)組,并計算所有元素的和。思考與練習(xí)1.將scores數(shù)組中所有同學(xué)的英語成績減去324案例:隨機游走軌跡模擬隨機游走(RandomWalk)又稱隨機游動或隨機漫步花粉的布朗運動、證券的漲跌結(jié)合NumPy的隨機數(shù)生成函數(shù)與ndarray實現(xiàn)初始位置:(0,0)每一步隨機地沿著x軸方向左移或右移一個單位,同時沿著y軸方向左移或右移一個單位左移或者右移的概率是相等的案例:隨機游走軌跡模擬隨機游走(RandomWalk)又稱251.模擬每步游走方向創(chuàng)建一個2×n的二維數(shù)組2行分別表示x、y軸上的運動n為移動總步數(shù),每列記錄一步數(shù)組元素取值為-1或1假設(shè)某次隨機游走走了10步用randint函數(shù)隨機生成每步走的方向>>>steps=10>>>rndwlk=np.random.randint(0,2,size=(2,steps))>>>rndwlkarray([[0,1,1,1,1,1,1,0,0,1],[0,1,0,1,0,0,0,0,1,0]])每次生成的方向不一樣隨機整數(shù)生成在-1,0,1之間有3個整數(shù),如何跳掉0?>>>rndwlk=np.where(rndwlk>0,1,-1)>>>rndwlkarray([[-1,1,1,1,1,1,1,-1,-1,1],[-1,1,-1,1,-1,-1,-1,-1,1,-1]])生成0~1之間的整數(shù)隨機數(shù),然后將0轉(zhuǎn)換為-11.模擬每步游走方向創(chuàng)建一個2×n的二維數(shù)組>>>ste262.計算每步游走后的位置第n步的位置為前n-1步位置+第n步累加和函數(shù)cumsum()實現(xiàn)方法,第4章,數(shù)據(jù)可視化時介紹>>>position=rndwlk.cumsum(axis=1)#逐列求累加和>>>positionarray([[-1,0,1,2,3,4,5,4,3,4],[-1,0,-1,0,-1,-2,-3,-4,-3,-4]],dtype=int32)>>>rndwlkarray([[-1,1,1,1,1,1,1,-1,-1,1],[-1,1,-1,1,-1,-1,-1,-1,1,-1]])2.計算每步游走后的位置第n步的位置為前n-1步位置+第n273.計算每步游走后距原點距離
>>>dists=np.sqrt(position[0]**2+position[1]**2)#sqrt求平方根>>>distsarray([1.41421356,0.,1.41421356,2.,3.16227766,4.47213595,5.83095189,5.65685425,4.24264069,5.65685425])>>>np.set_printoptions(precision=4)>>>distsarray([1.4142,0.,1.4142,2.,3.1623,4.4721,5.8310,5.6569,4.2426,5.6569])>>>dists.max()#游走最遠距離6.3246>>>dists.min()#游走最遠距離0.0>>>dists.mean()#游走平均距離3.3850>>>(dists>dists.mean()).sum()#超出平均距離5浮點數(shù)小數(shù)位很多,可以設(shè)置顯示位數(shù)設(shè)置后,一直有效3.計算每步游走后距原點距離
>>>dists=np28思考與練習(xí)1.將隨機游走的步數(shù)增加到100步,計算物體距離原點的距離。2.重復(fù)多次隨機游走過程,物體距離原點距離的變化趨勢是什么?思考與練習(xí)1.將隨機游走的步數(shù)增加到100步,計算物體距離29多維數(shù)據(jù)結(jié)構(gòu)與運算
多維數(shù)據(jù)結(jié)構(gòu)與運算
30多維數(shù)據(jù)計算數(shù)據(jù)分析的數(shù)據(jù)組織方式向量、矩陣高效計算NumPy庫提供了多維數(shù)組ndarray支持豐富數(shù)據(jù)表示方式Anaconda環(huán)境中已安裝>>>importnumpyasnpndarray:NumPy核心N-dimensionalarray,N維數(shù)組相同數(shù)據(jù)類型的元素組成的多維數(shù)組數(shù)組大小需事先指定多維數(shù)據(jù)計算數(shù)據(jù)分析的數(shù)據(jù)組織方式ndarray:NumP31案例2-1:學(xué)生課程考試成績5位同學(xué)參加了學(xué)業(yè)水平考試,考試科目共7門姓名MathEnglishPythonChineseArtDatabasePhysics王微70857790828489肖良英60648075809290方綺雯90938887869091劉旭陽80829188838680錢易銘88727890917380案例2-1:學(xué)生課程考試成績5位同學(xué)參加了學(xué)業(yè)水平考試,考試322.1.1一維數(shù)組對象創(chuàng)建一維數(shù)組分別保存學(xué)生姓名和考試科目,訪問數(shù)組元素np.array(),基于列表創(chuàng)建一維數(shù)組>>>names=np.array(['王微','肖良英','方綺雯','劉旭陽','錢易銘'])>>>namesarray(['王微','肖良英','方綺雯','劉旭陽','錢易銘',dtype='<U3')>>>subjects=np.array(['Math','English','Python','Chinese','Art','Database','Physics'])>>>subjectsarray(['Math','English','Python','Chinese','Art','Database','Physics'],dtype='<U8')2.1.1一維數(shù)組對象創(chuàng)建一維數(shù)組分別保存學(xué)生姓名和考試科33一維數(shù)組訪問數(shù)組特性>>>names.ndim#數(shù)組維度1>>>names.size#數(shù)組元素個數(shù)5>>>names.dtype#數(shù)組數(shù)據(jù)類型dtype('<U3')索引序號范圍為[0,n-1]或[-n,-1]n為數(shù)組大小與Python序列的索引使用方式一致>>>names[2]'方綺雯'>>>subjects[-3]'Art' >>>namesarray(['王微','肖良英','方綺雯','劉旭陽','錢易銘',dtype='<U3')>>>subjectsarray(['Math','English','Python','Chinese','Art','Database','Physics'],dtype='<U8')一維數(shù)組訪問數(shù)組特性>>>names.ndim#數(shù)組維34一維數(shù)組切片抽取數(shù)組的一部分元素生成新數(shù)組稱為切片操作直接以列表形式給出需要的元素索引外層括號表示元素訪問內(nèi)層括號表示列表>>>namesarray(['王微','肖良英','方綺雯','劉旭陽','錢易銘',dtype='<U3')>>>subjectsarray(['Math','English','Python','Chinese','Art','Database','Physics'],dtype='<U8')>>>subjects[[0,2,4]]#兩層括號,[0,2,4]為索引列表array(['Math','Python','Art'],dtype='<U8')索引也可表示為:start:end:step生成start~end-1,步長step的等差數(shù)列>>>names[1:4]#抽取索引為1、2、3的元素array(['肖良英''方綺雯''劉旭陽'],dtype='<U3')>>>subjects[:-1:2]#抽取索引為0、2、4的元素array(['Math','Python','Art'],dtype='<U8')start省略:從0開始end省略:到最后step省略:步長為1一維數(shù)組切片抽取數(shù)組的一部分元素生成新數(shù)組稱為切片操作外層括35根據(jù)條件篩選數(shù)組元素使用條件表達式和關(guān)系運算符篩選出names數(shù)組中值等于“王微”或“錢易銘”的元素>>>names[(names=='王微')|(names=='錢易銘')]array(['王微','錢易銘'],dtype='<U3')條件表達式:生成布爾型的數(shù)組>>>mask=(names=='王微')|(names=='錢易銘')>>>maskarray([True,False,False,False,True],dtype=bool)>>>names[mask]array(['王微''錢易銘'],dtype='<U3')'王微''肖良英''方綺雯''劉旭陽''錢易銘'TrueFalseFalseFalseTruenamesmasknames[mask]array(['王微‘,'錢易銘']根據(jù)條件篩選數(shù)組元素使用條件表達式和關(guān)系運算符>>>nam362.1.2二維數(shù)組對象使用array函數(shù)創(chuàng)建二維ndarray數(shù)組對象初始化的列表,其元素也是列表創(chuàng)建二維數(shù)組scores,記錄“names”中同學(xué)“subjects”的各門課程考試成績>>>scores=np.array([[70,85,77,90,82,84,89],[60,64,80,75,80,92,90],[90,93,88,87,86,90,91],[80,82,91,88,83,86,80],[88,72,78,90,91,73,80]])>>>scoresarray([[70,85,77,90,82,84,89],[60,64,80,75,80,92,90],[90,93,88,87,86,90,91],[80,82,91,88,83,86,80],[88,72,78,90,91,73,80]])一行數(shù)據(jù)2.1.2二維數(shù)組對象使用array函數(shù)創(chuàng)建二維ndarr37訪問二維數(shù)組元素數(shù)組特性>>>scores.ndim#數(shù)組維數(shù)2>>>scores.size#數(shù)組元素總數(shù),行×列35>>>scores.shape#數(shù)組的行數(shù)和列數(shù)(5,7)>>>scores.dtype#數(shù)組元素的類型dtype('int32')二維數(shù)組切片操作的基本格式:arr[row,column]row行序號,column列序號,中間用‘,’隔開行、列切片的表示方式與一維數(shù)組相同用“:”代替行或列,表示選中對應(yīng)的所有行或列訪問二維數(shù)組元素數(shù)組特性>>>scores.ndim#38二維數(shù)組切片訪問指定行、列的元素,給出行和列兩個索引值>>>scores[1,0]60>>>scores[[1,3],[0,1]]array([60,82])>>>scores[[1,3]]array([[60,64,80,75,80,92,90],[80,82,91,88,83,86,80]])取某行所有列值,可以省略列:抽取scores[1,0],scores[3,1]>>>scores[:,[0,1]]array([[70,85],[60,64],[90,93],[80,82],[88,72]])抽取部分列,行不能省略>>>scores[[0,3],1:4]array([85,77,90][82,91,88,])>>>scores[[1,3]][:,[0,1]]array([[60,64],[80,82]])抽取1、3行中0、1列數(shù)據(jù),兩層切片二維數(shù)組切片訪問指定行、列的元素,給出行和列兩個索引值>>>39條件篩選使用布爾型數(shù)組篩選訪問其他數(shù)組的元素>>>scores[(names=='肖良英')|(names=='方綺雯'),:]array([[60,64,80,75,80,92,90],[90,93,88,87,86,90,91]])行篩選,names的長度
和scores的行數(shù)一致>>>scores[(names=='肖良英')|(names=='方綺雯')][:,(subjects=='Math')|(subjects=='Python')]array([[60,80],[90,88]])選擇“肖良英”和“方綺雯”的“Math”和“Python”課程成績,可以使用兩層篩選實現(xiàn)第一層篩選后的所有行,2行條件篩選使用布爾型數(shù)組篩選訪問其他數(shù)組的元素>>>scor40思考與練習(xí)1.一維數(shù)組訪問。在subjects數(shù)組中選擇并顯示序號1、2、4門課的名稱,使用負值序號選擇并顯示names數(shù)組中'方綺雯'。選擇并顯示names數(shù)組從2到最后的數(shù)組元素;選擇并顯示subjects數(shù)組2到4的數(shù)組元素。使用布爾條件選擇并顯示subjects數(shù)組中的英語和物理科目名稱。2.二維數(shù)組訪問。選擇并顯示scores數(shù)組的1、4行。選擇并顯示scores數(shù)組中行號2、4同學(xué)的數(shù)學(xué)和Python成績。選擇并顯示scores數(shù)組中所有同學(xué)的數(shù)學(xué)和藝術(shù)課程成績。選擇并顯示scores數(shù)組中“王微”和“劉旭陽”的英語和藝術(shù)課程成績。3.生成由整數(shù)10~19組成的2×5的二維數(shù)組。思考與練習(xí)1.一維數(shù)組訪問。41創(chuàng)建多維數(shù)組的常用方法arange()>>>np.arange(0,11)array([0,1,2,3,4,5,6,7,8,9,10])>>>np.arange(3,11,2)array([3,5,7,9])>>>np.arange(0.3,1.5,0.3)array([0.3,0.6,0.9,1.2])reshape()將一維數(shù)組轉(zhuǎn)換為指定的多維數(shù)組arange可以生成浮點數(shù)列>>>np.arange(0,15).reshape(3,5)array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])zeros()、ones()>>>np.zeros((3,4))array([[0.,0.,0.,0.],[0.,0.,0.,0.],[0.,0.,0.,0.]])>>>np.ones((4,3))array([[1.,1.,1.],[1.,1.,1.],[1.,1.,1.],[1.,1.,1.]])創(chuàng)建多維數(shù)組的常用方法arange()>>>np.arang422.2多維數(shù)組運算基本算數(shù)運算函數(shù)運算2.2多維數(shù)組運算基本算數(shù)運算43二維數(shù)組與標(biāo)量運算為所有同學(xué)的所有課程成績增加5分。>>>scores+5array([[75,90,82,95,87,89,94], [65,69,85,80,85,97,95],[95,98,93,92,91,95,96],[85,87,96,93,88,91,85],[93,77,83,95,96,78,85]])等價于>>>a=np.ones((5,7))*5>>>aarray([[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.],[5.,5.,5.,5.,5.,5.,5.]])>>>scores+aarray([[75.,90.,82.,95.,87.,89.,94.],[65.,69.,85.,80.,85.,97.,95.],[95.,98.,93.,92.,91.,95.,96.],[85.,87.,96.,93.,88.,91.,85.],[93.,77.,83.,95.,96.,78.,85.]])二維數(shù)組與標(biāo)量運算為所有同學(xué)的所有課程成績增加5分。>>>44二維數(shù)組與一維數(shù)組運算每個科目基礎(chǔ)分不同,為各科目增加相應(yīng)的基礎(chǔ)分。>>>bonus=np.array([3,4,5,3,6,7,2])>>>scores+bonusarray([[73,89,82,93,88,91,91],[63,68,85,78,86,99,92],[93,97,93,90,92,97,93],[83,86,96,91,89,93,82],[91,76,83,93,97,80,82]])修改選定數(shù)據(jù)>>>scores[names=='肖良英',subjects=='English']array([64])>>>scores[names=='肖良英',subjects=='English']+5array([69])二維數(shù)組與一維數(shù)組運算每個科目基礎(chǔ)分不同,為各科目增加相應(yīng)的45課后作業(yè)“大潤發(fā)”、“沃爾瑪”、“聯(lián)華”和“農(nóng)工商”四個超市都賣蘋果、香蕉、桔子、獼猴桃和芒果5種水果。使用NumPy的ndarray實現(xiàn)以下功能。創(chuàng)建2個一維數(shù)組分別存儲超市名稱和水果名稱;創(chuàng)建1個4×5的二維數(shù)組存儲不同超市的水果價格,其中價格由4到10范圍內(nèi)的隨機數(shù)生成;選擇“大潤發(fā)”的蘋果和“聯(lián)華”的香蕉,并將價格增加1元;“農(nóng)工商”水果大減價,所有水果價格減少2元;統(tǒng)計四個超市蘋果和芒果的銷售均價;找出桔子價格最貴的超市名稱(不是序號)。打包提交名為:“學(xué)號-姓名-Data-1.zip”課后作業(yè)“大潤發(fā)”、“沃爾瑪”、“聯(lián)華”和“農(nóng)工商”四個超市46多維數(shù)組運算-通用函數(shù)一元,1個輸入數(shù)組,返回1個數(shù)組函數(shù)描述abs、fabs計算整數(shù)、浮點數(shù)或復(fù)數(shù)的絕對值sqrt計算各元素的平方根square計算各元素的平方exp計算各元素的指數(shù)log、log10自然對數(shù)、底數(shù)為10的logsign計算各元素的正負號ceil計算各元素的ceiling值,即大于等于該值的最小整數(shù)floor計算各元素的floor值,即小于等于該值的最大整數(shù)cos、cosh、sinsinh、tan、tanh普通和雙曲型三角函數(shù)多維數(shù)組運算-通用函數(shù)一元,1個輸入數(shù)組,返回1個數(shù)組函數(shù)描47通用函數(shù)-二元2個輸入數(shù)組,返回1個數(shù)組函數(shù)描述add將數(shù)據(jù)中對應(yīng)的元素相加subtract從第一個數(shù)組中減去第二個數(shù)組中的元素multiply數(shù)組元素相乘divide數(shù)組對應(yīng)元素相除power對第一個數(shù)組中的元素A,根據(jù)第二個數(shù)組中的相應(yīng)元素B,計算ABmod元素級的求模運算copysign將第二個數(shù)組中的值的符號復(fù)制給第一個數(shù)組中的值equal,not_equal執(zhí)行元素級的比較運算,產(chǎn)生布爾型數(shù)組通用函數(shù)-二元2個輸入數(shù)組,返回1個數(shù)組函數(shù)描述add將數(shù)據(jù)48通用函數(shù)-實例將同學(xué)的考試成績轉(zhuǎn)換成整數(shù)形式的十分制分數(shù)為每個同學(xué)的分數(shù)減去3分>>>np.floor(scores/10)array([[7.,8.,7.,9.,8.,8.,8.],[6.,6.,8.,7.,8.,9.,9.],[9.,9.,8.,8.,8.,9.,9.],[8.,8.,9.,8.,8.,8.,8.],[8.,7.,7.,9.,9.,7.,8.]])>>>np.subtract(scores,3)array([[67,82,74,87,79,81,86],[57,61,77,72,77,89,87],[87,90,85,84,83,87,88],[77,79,88,85,80,83,77],[85,69,75,87,88,70,77]])通用函數(shù)-實例將同學(xué)的考試成績轉(zhuǎn)換成整數(shù)形式的十分制分數(shù)為每49聚合函數(shù)支持在行、列或者全體數(shù)組元素上的聚集函數(shù)函數(shù)描述sum求和mean算術(shù)平均值min、max最大值和最小值argmin、argmax最大值和最小值的索引cumsum從0開始向前累加各元素cumprod從1開始向前累乘各元素統(tǒng)計不同科目的成績總分>>>scores.sum(axis=0)#按列求和array([388,396,414,430,422,425,430])求“王微”所有課程成績的平均分查詢英語考試成績最高同學(xué)的姓名>>>scores[names=='王微'].mean()82.428571428571431>>>names[scores[:,subjects=='English'].argmax()]'方綺雯'聚合函數(shù)支持在行、列或者全體數(shù)組元素上的聚集函數(shù)函數(shù)描述su50隨機數(shù)組生成函數(shù)np.random模塊函數(shù)描述random隨機產(chǎn)生[0,1)之間的浮點值randint隨機生成給定范圍內(nèi)的一組整數(shù)uniform隨機生成給定范圍內(nèi)服從均勻分布的一組浮點數(shù)choice在給定的序列內(nèi)隨機選擇元素normal隨機生成一組服從給定均值和方差的正態(tài)分布隨機數(shù)隨機數(shù)組生成函數(shù)np.random模塊函數(shù)描述random隨51隨機數(shù)組生成函數(shù)-實例模塊生成由10個隨機整數(shù)組成的一維數(shù)組,整數(shù)的取值范圍從0到5randint(start,end,size)>>>np.random.randint(0,6,10)array([5,5,0,2,4,3,1,2,5,4])生成服從均值為0、方差為1的服從正態(tài)分布的4×5二維數(shù)組>>>np.random.normal(0,1,size=(4,5))array([[0.50293855,-0.65924346,1.10370417,0.97295644,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年財經(jīng)新聞解讀股市分析與經(jīng)濟趨勢練習(xí)題
- 2026年法律法規(guī)常識法律基礎(chǔ)與案例分析題庫
- 2026年軟件開發(fā)與編程技術(shù)實踐試題
- 2026年金融科技基礎(chǔ)知識點題庫及解析
- 2026年機械設(shè)計與制造技術(shù)筆試題目
- 2026年電子商務(wù)運營策略題庫及答案詳解
- 2026年經(jīng)濟專業(yè)職稱考試宏觀經(jīng)濟政策分析題目庫
- 2026年人力資源規(guī)劃與招聘計劃制定試題
- 2026年人力資源崗面試招聘項目復(fù)盤
- 2026年旅游管理與酒店服務(wù)知識測試題
- 尼帕病毒病預(yù)防控制技術(shù)指南總結(jié)2026
- 2026屆大灣區(qū)普通高中畢業(yè)年級聯(lián)合上學(xué)期模擬考試(一)語文試題(含答案)(含解析)
- 初高中生物知識銜接課件
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及完整答案詳解一套
- 道路隔離護欄施工方案
- (2025年)軍隊文職考試面試真題及答案
- 新版-八年級上冊數(shù)學(xué)期末復(fù)習(xí)計算題15天沖刺練習(xí)(含答案)
- 2025智慧城市低空應(yīng)用人工智能安全白皮書
- 青島生建z28-75滾絲機說明書
- DEFORM在汽車零件冷鍛工藝中的應(yīng)用
- 廣州市自來水公司招聘試題
評論
0/150
提交評論