機(jī)器學(xué)習(xí)中numpy的經(jīng)典必用一份腳本足夠_第1頁(yè)
機(jī)器學(xué)習(xí)中numpy的經(jīng)典必用一份腳本足夠_第2頁(yè)
機(jī)器學(xué)習(xí)中numpy的經(jīng)典必用一份腳本足夠_第3頁(yè)
機(jī)器學(xué)習(xí)中numpy的經(jīng)典必用一份腳本足夠_第4頁(yè)
機(jī)器學(xué)習(xí)中numpy的經(jīng)典必用一份腳本足夠_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

#機(jī)器學(xué)習(xí)中numpy的經(jīng)典必用#Scipy是一種用于數(shù)學(xué)、科學(xué)、工程領(lǐng)域的常用軟件包,#可以處理插值、積分、優(yōu)化、圖像處理、常微分方程數(shù)值解的求解、#信號(hào)處理等問題。它用于有效計(jì)算Numpy矩陣,使Numpy和Scipy協(xié)同工作,高效處理問題。#1#LoadLibraryimportnumpyasnpfromscipyimportsparse#將向量創(chuàng)立為行vector_row=np.array([1,2,3])#將向量創(chuàng)立為列vector_column=np.array([[1],[2],[3]])#Numpy中創(chuàng)立一種二維數(shù)組,并將其稱為矩陣,它包括2行3列#CreateaMatrixmatrix=np.array([[1,2,3],[4,5,6]])print("二維矩陣matrix:{}".format(matrix))#2#創(chuàng)立稀疏矩陣(sparseMatrix)#顯示非零元素的位置matrix_1=np.array([[0,0],[0,1],[3,0]])print("二維含零元素的矩陣matrix_1:{}".format(matrix_1))matrix_1_sparse=sparse.csr_matrix(matrix_1)print("二維矩陣的稀疏矩陣:{}".format(matrix_1_sparse))#3#描述矩陣#CreateaMatrixmatrix=np.array([[1,2,3],[4,5,6],[7,8,9]])#ViewtheNumberofRowsandColumnsprint("矩陣的屬性行列數(shù):{}".format(matrix.shape))#Viewthenumberofelements(rows*columns)print("矩陣的元素個(gè)數(shù)size:{}".format(matrix.size))#ViewthenumberofDimensions(2inthiscase)print("矩陣的維度ndim:{}".format(matrix.ndim))#3#使用函數(shù)操作矩陣元素#建立一種加100的函數(shù)defadd_100(i):i=i+100returni#把函數(shù)轉(zhuǎn)化為矢量函數(shù)(vectorizedfunction)vectorized_add_100=np.vectorize(add_100)#讓函數(shù)作用域矩陣的所有元素print("讓函數(shù)加100作用于矩陣matrix:{}".format(vectorized_add_100(matrix)))#4#矩陣的大小print("矩陣元素的最大值:{}".format(np.max(matrix)))print("返回元素的最小值:{}".format(np.min(matrix)))print("找到矩陣每列的最大值:{}".format(np.max(matrix,axis=0)))print("找到每一行元素的最大值:{}".format(np.max(matrix,axis=1)))#二維矩陣的均值,方差和原則方差print("矩陣matrix的均值:{}".format(np.mean(matrix)))print("矩陣matrix的方差:{}".format(np.std(matrix)))print("矩陣matrix原則方差:{}".format(np.var(matrix)))#5#數(shù)組的重塑print("矩陣轉(zhuǎn)換一列:{}".format(matrix.reshape(9,1)))#這里-1表達(dá)盡量多的列print("矩陣轉(zhuǎn)換為一行的二維數(shù)組:{}".format(matrix.reshape(1,-1)))#假如我們?cè)趓eshape的參數(shù)上只放了一種參數(shù),闡明我們要返回的是一行n列的數(shù)組print("矩陣轉(zhuǎn)換為一行序列的表達(dá)措施:{}".format(matrix.reshape(9)))#6#矩陣的轉(zhuǎn)置print("矩陣matrix的轉(zhuǎn)置:{}".format(matrix.T))#矩陣的秩#矩陣的行列式print("matrix的行列式:{}".format(np.linalg.det(matrix)))#計(jì)算矩陣的秩print("matrix的秩:{}".format(np.linalg.matrix_rank(matrix)))#矩陣的對(duì)角線print("矩陣的主對(duì)角線:{}".format(matrix.diagonal()))#可以使用偏移來(lái)查看它的次對(duì)角線,正數(shù)表達(dá)右移,負(fù)數(shù)表達(dá)左移:print("矩陣的:{}".format(matrix.diagonal(offset=1)))#可以使用偏移來(lái)查看它的次對(duì)角線,正數(shù)表達(dá)右移,負(fù)數(shù)表達(dá)左移:print("矩陣的:{}".format(matrix.diagonal(offset=-1)))#numpy.trace是求shape的對(duì)角線上的元素的和print("matrix的跡:{}".format(matrix.trace()))#7#查找特性值和特性向量eigenvalues,eigenvectors=np.linalg.eig(matrix)print("矩陣的特性值:{},矩陣的特性向量:{}".format(eigenvalues,eigenvectors))#矩陣的點(diǎn)積vector_1=np.array([1,2,3])vector_2=np.array([4,5,6])#計(jì)算點(diǎn)積print("兩個(gè)向量的點(diǎn)積1:{}".format(np.dot(vector_1,vector_2)))#第二種體現(xiàn)措施print("兩個(gè)向量的點(diǎn)積2:{}".format(vector_1@vector_2))#8#矩陣的加減乘除matrix_2=np.array([[7,8,9],[4,5,6],[1,2,3]])#加print("矩陣相加:{}".format(np.add(matrix,matrix_2)))#減print("矩陣想減:{}".format(np.subtract(matrix,matrix_2)))#乘print("矩陣的乘法:{}".format(matrix*matrix_2))#9#矩陣的逆print("矩陣的逆矩陣:{}".format(np.linalg.inv(matrix)))#矩陣的隨機(jī)數(shù)產(chǎn)生np.random.seed(1)#產(chǎn)生3個(gè)隨機(jī)的整型數(shù)界于[1,10]print("3個(gè)隨機(jī)數(shù):{}".format(np.random.randint(0,10,3)))#產(chǎn)生3個(gè)隨機(jī)數(shù)滿足一種均值為1.0,方差為2.0的正態(tài)分布print("3個(gè)隨機(jī)數(shù)的正態(tài)分布:{}".format(np.random.normal(1.0,2.0,3)))############################numpy的基礎(chǔ)操作#訪問列表元素,切片作用于數(shù)組importnumpyasnparr=np.array([2.0,6.0,5.0,5.0])print(arr[:3])print(arr[0])print(arr)#1#提取所包括的不一樣元素,使用unique函數(shù)arr_unique=np.unique(arr)print("unique提取數(shù)列中的不一樣元素:{}".format(arr_unique))#2#數(shù)組元素的排序也可以用sort()函數(shù),數(shù)組的索引用argsort()函數(shù)arr_sort=np.sort(arr)print("sort從小到大的排序:{}".format(arr_sort))arr_sort_index=np.argsort(arr)print("argsort進(jìn)行排序的索引:{}".format(arr_sort_index))#3#array_equal用于對(duì)比兩個(gè)數(shù)組與否相等#對(duì)比仿佛顯示只在意數(shù)值,而不在意數(shù)據(jù)類型arr1=np.array([1,3,5,7])arr2=np.array([2,6,5,5])arr3=np.array([2,6,5,5],dtype=int)print("arry_equal對(duì)比兩個(gè)數(shù)組與否相等:{}".format(np.array_equal(arr,arr1)))print("arry_equal對(duì)比兩個(gè)數(shù)組與否相等:{}".format(np.array_equal(arr,arr2)))print("arry_equal對(duì)比兩個(gè)數(shù)組與否相等:{}".format(np.array_equal(arr,arr3)))#4#shuffle()用來(lái)打亂數(shù)組的排列,變成隨機(jī)排列#注意這個(gè)函數(shù)不返回任何東西np.random.shuffle(arr1)print("shuffle函數(shù)打亂arr1后的次序輸出:{}".format(arr1))#5#多維數(shù)組的書寫措施:與列表的操作不一樣,多維列表各維度用逗號(hào)隔開matrix_1=np.array([[4,5,6],[7,8,9]],dtype=float)print("二維數(shù)組的體現(xiàn)形式:{}".format(matrix_1))#6#多維數(shù)組的訪問print("矩陣第1行第1列的數(shù)值:matrix_1[0,0]={}".format(matrix_1[0,0]))print("矩陣第2行第3列的數(shù)值:matrix_1[1,2]={}".format(matrix_1[1,2]))#7#多維數(shù)組的切片操作,使用冒號(hào)索引,切片仍然還是矩陣#0:1其實(shí)指的是0一種效果,跟range同樣,行和列的序號(hào)仍然是從0開始print("矩陣的第一行的第1個(gè)數(shù)的切片矩陣:martrix_1[0,0:1]={}".format(matrix_1[0,0:1]))print("矩陣的第一行的前兩個(gè)數(shù)的切片矩陣:martrix_1[0,0:2]={}".format(matrix_1[0,0:2]))print("矩陣的第二行的前兩個(gè)數(shù)的切片矩陣:martrix_1[1,0:2]={}".format(matrix_1[1,0:2]))print("矩陣的第二行的所有數(shù)的切片矩陣:martrix_1[1,:]={}".format(matrix_1[1,:]))#8#將flatten()函數(shù)將多維數(shù)組合并成一維數(shù)組arr4=matrix_1.flatten()print("將二維矩陣matrix_1合并成認(rèn)為數(shù)組arr4:{}".format(arr4))#9#shape()函數(shù)查看數(shù)組對(duì)象的屬性:大小print("shape查看數(shù)組元素matrix_1的屬性大?。簕}".format(matrix_1.shape))#dtype返回?cái)?shù)組元素的類型print("dtype返回?cái)?shù)組元素martix_1的元素類型:{}".format(matrix_1.dtype))#10#len()函數(shù)返回?cái)?shù)組的第一維的長(zhǎng)度:認(rèn)為數(shù)組的元素個(gè)數(shù),二維數(shù)組的行數(shù)print("len()返回一維數(shù)組arr4的長(zhǎng)度:{}".format(len(arr4)))print("len()返回二維矩陣的第一維度的長(zhǎng)度:matrix:{}".format(len(matrix_1)))#11#in作用于數(shù)組中與否有該元素print("in函數(shù)輸出3是不是在arr4中:{}".format(3inarr4))print("in函數(shù)輸出7是不是在arr4中:{}".format(7inarr4))#12#reshape()函數(shù),用于調(diào)整重塑數(shù)組的構(gòu)造。6=2*3#這里的2*3可不是按照python的從零開始來(lái)的喔??!matrix_2=arr4.reshape((3,2))print("reshape函數(shù)把一種6個(gè)元素的一維序列塑導(dǎo)致3*2的矩陣輸出matrix_2:{}".format(matrix_2))#13#transpose()矩陣的轉(zhuǎn)置:也就是行列互換#同樣也可以使用Tmatrix_3=matrix_2.transpose()matrix_T=matrix_2.transpose()print("transpose將矩陣轉(zhuǎn)置為matrix_3:{}".format(matrix_3))print("transpose||T兩種轉(zhuǎn)置的措施是同樣的:{}".format(np.array_equal(matrix_3,matrix_T)))#14#newaxis()函數(shù)增長(zhǎng)維度:調(diào)整數(shù)組元素位置arr_1=np.array([14,32,13],dtype=float)print("新建數(shù)組arr_1:{},屬性大小為:{}".format(arr_1,arr_1.shape))print("newaxis增長(zhǎng)數(shù)組維度:{},屬性大小為:{}".format(arr_1[:,np.newaxis],arr_1[:,np.newaxis].shape))print("newaxis增長(zhǎng)數(shù)組維度:{},屬性大小為:{}".format(arr_1[np.newaxis,:],arr_1[np.newaxis,:].shape))#15#concatenate()函數(shù)用于數(shù)組的操作#取決與數(shù)組的維度,多種一維數(shù)組可以相繼連接,將要連接的多種數(shù)組置于中作為參數(shù)輸入#對(duì)于一維數(shù)組函數(shù)不帶任何參數(shù)就默認(rèn)為是第一種軸#對(duì)于二維數(shù)組要指定是哪條軸相連接arr_2=np.array([10,20,30],dtype=float)arr_3=np.array([31,43,54,61],dtype=float)arr_4=np.array([71,41,51,40],dtype=float)arr_concat=np.concatenate((arr_2,arr_3,arr_4))print("concatenate函數(shù)將三個(gè)序列進(jìn)行連接:{}".format(arr_concat))#二維數(shù)組的操作,行連接就是行數(shù)增長(zhǎng),列連接就是列增長(zhǎng)arr_4=np.array([[31,43,54,61],[1,2,3,4]],dtype=float)arr_5=np.array([[71,41,51,40],[7,8,9,7]],dtype=float)arr_concat_axis0=np.concatenate((arr_4,arr_5),axis=0)arr_concat_axis1=np.concatenate((arr_4,arr_5),axis=1)print("concatenate函數(shù)將兩個(gè)數(shù)列按照行或者列進(jìn)行連接:axis0={},axis1={}".format(arr_concat_axis0,arr_concat_axis1))#16#numpy的linalg子模塊,實(shí)現(xiàn)了矩陣的多種線性代數(shù)運(yùn)算。#計(jì)算矩陣的行列式的值matrix=np.array([[74,22,10],[92,31,17],[21,22,12]],dtype=float)print("矩陣matrix:{}".format(matrix))matrix_det=np.linalg.det(matrix)print("矩陣matrix的行列式:matrix_det:{}".format(matrix_det))#17#inv函數(shù)生成矩陣的逆矩陣inv_matrix=np.linalg.inv(matrix)print("矩陣matrix的逆矩陣inv_matrix:{}".format(inv_matrix))inv_mul_matrix=np.dot(inv_matrix,matrix)print("matrix的逆矩陣與matrix的乘積:{}".format(inv_mul_matrix))#18#矩陣的特性值(eigenvalues)和特性向量(eigenvectors)計(jì)算措施[vals,vecs]=np.linalg.eig(matrix)eig=np.linalg.eig(matrix)print("矩陣matrix的特性值vals:{},特性向量vecs:{}".format(vals,vecs))print("矩陣matrix的特性值vals:{},特性向量vecs:{}".format(eig[0],eig[1]))#19#記錄學(xué)與數(shù)學(xué)函數(shù)#數(shù)組元素記錄信息函數(shù):聚合型運(yùn)算:求和,均值,中位數(shù)和原則差arr_2=np.random.rand(8,4)mean_arr=arr_2.mean()print("arr_2的平均值mean_arr:{}".format(mean_arr))sum_arr=arr_2.sum()print("arr_2的數(shù)據(jù)總和:{}".format(sum_arr))#numpy數(shù)組創(chuàng)立importnumpyasnparr=np.array([2,6,7,8],float)print(arr)print(type(arr))#1#數(shù)組轉(zhuǎn)換成列表arr=np.array([1,2,3],float)arr.tolist()print(arr.tolist())print(type(arr.tolist()))print(list(arr))print(type(list(arr)))print(type(arr))#2#用既有數(shù)組創(chuàng)立新的對(duì)象,使用"copy"函數(shù),易錯(cuò)點(diǎn)1arr1=arrprint('僅僅復(fù)制了指向同一種地址:{}'.format(arr1))arr1=arr.copy()print('這個(gè)時(shí)候才是創(chuàng)立了對(duì)象:{}'.format(arr1))arr1[0]=0print('試圖修改arr1的第一種值:{}'.format(arr1))print('再來(lái)看arr是沒有發(fā)生變化的:{}'.format(arr))print('闡明復(fù)制成功了??!')#3#用同一種值來(lái)覆蓋一組原有的數(shù)組值,使用'fill'函數(shù),用處是作為初始化#fill是個(gè)功能命令,返回值當(dāng)然是0或1,易錯(cuò)點(diǎn)2arr2=np.array([1,2,3,4,5])print(arr2.fill(1))print(arr2.fill(2))print('fill填充的數(shù)組變化arr2:{}'.format(arr2))#4#使用random隨機(jī)初始化元素?cái)?shù)組:permutation內(nèi)的參數(shù)代表數(shù)組長(zhǎng)度arr3=np.random.permutation(3)print('random隨機(jī)化數(shù)組arr3:{}'.format(arr3))#使用正態(tài)分布normal()函數(shù)進(jìn)行抽樣一系列數(shù)組:均值為0,arr4=np.random.normal(0,1,5)print('random.normal正態(tài)分布抽樣數(shù)組arr4:{}'.format(arr4))#5#Numpy還提供幾種創(chuàng)立二維數(shù)組(矩陣)的函數(shù)#(1)identity()函數(shù)創(chuàng)立單位矩陣,其行列數(shù)用參數(shù)指定arr5=np.identity(5,dtype=float)print('identity()函數(shù)創(chuàng)立二維單位矩陣arr5:{}'.format(arr5))#(2)eye函數(shù)返回第k條對(duì)角線上元素為1的矩陣#從后續(xù)試驗(yàn)成果來(lái)看,對(duì)角線的形成是以N、M中較小值為原則生成一種方陣的對(duì)角線,#當(dāng)索引index取值為3時(shí)則該方陣對(duì)角線向右移動(dòng)3個(gè)單位,當(dāng)索引index取值為-2時(shí)則該方針對(duì)角線向左移動(dòng)2個(gè)單位arr6=np.eye(3,k=1,dtype=float)print(arr6)arr6=np.eye(3,k=0,dtype=float)print(arr6)arr6=np.eye(3,k=2,dtype=float)print(arr6)#(3)創(chuàng)立新數(shù)組(1或2維)最常用的函數(shù)是zeros和ones,它們按照指定的維度創(chuàng)立數(shù)組,并用0或1填充arr7=np.ones((2,3),dtype=float)prin

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論