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

下載本文檔

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

文檔簡介

#機器學習中numpy的典型必用#Scipy是一種用于數(shù)學、科學、工程領域的慣用軟件包,#能夠解決插值、積分、優(yōu)化、圖像解決、常微分方程數(shù)值解的求解、#信號解決等問題。它用于有效計算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("矩陣的元素個數(shù)size:{}".format(matrix.size))#ViewthenumberofDimensions(2inthiscase)print("矩陣的維度ndim:{}".format(matrix.ndim))#3#使用函數(shù)操作矩陣元素#建立一種加100的函數(shù)defadd_100(i):i=i+100returni#把函數(shù)轉化為矢量函數(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("矩陣轉換一列:{}".format(matrix.reshape(9,1)))#這里-1表達盡量多的列print("矩陣轉換為一行的二維數(shù)組:{}".format(matrix.reshape(1,-1)))#如果我們在reshape的參數(shù)上只放了一種參數(shù),闡明我們要返回的是一行n列的數(shù)組print("矩陣轉換為一行序列的表達辦法:{}".format(matrix.reshape(9)))#6#矩陣的轉置print("矩陣matrix的轉置:{}".format(matrix.T))#矩陣的秩#矩陣的行列式print("matrix的行列式:{}".format(np.linalg.det(matrix)))#計算矩陣的秩print("matrix的秩:{}".format(np.linalg.matrix_rank(matrix)))#矩陣的對角線print("矩陣的主對角線:{}".format(matrix.diagonal()))#能夠使用偏移來查看它的次對角線,正數(shù)表達右移,負數(shù)表達左移:print("矩陣的:{}".format(matrix.diagonal(offset=1)))#能夠使用偏移來查看它的次對角線,正數(shù)表達右移,負數(shù)表達左移:print("矩陣的:{}".format(matrix.diagonal(offset=-1)))#numpy.trace是求shape的對角線上的元素的和print("matrix的跡:{}".format(matrix.trace()))#7#查找特性值和特性向量eigenvalues,eigenvectors=np.linalg.eig(matrix)print("矩陣的特性值:{},矩陣的特性向量:{}".format(eigenvalues,eigenvectors))#矩陣的點積vector_1=np.array([1,2,3])vector_2=np.array([4,5,6])#計算點積print("兩個向量的點積1:{}".format(np.dot(vector_1,vector_2)))#第二種體現(xiàn)辦法print("兩個向量的點積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)))#矩陣的隨機數(shù)產(chǎn)生np.random.seed(1)#產(chǎn)生3個隨機的整型數(shù)界于[1,10]print("3個隨機數(shù):{}".format(np.random.randint(0,10,3)))#產(chǎn)生3個隨機數(shù)滿足一種均值為1.0,方差為2.0的正態(tài)分布print("3個隨機數(shù)的正態(tài)分布:{}".format(np.random.normal(1.0,2.0,3)))############################numpy的基礎操作#訪問列表元素,切片作用于數(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進行排序的索引:{}".format(arr_sort_index))#3#array_equal用于對比兩個數(shù)組與否相等#對比仿佛顯示只在乎數(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對比兩個數(shù)組與否相等:{}".format(np.array_equal(arr,arr1)))print("arry_equal對比兩個數(shù)組與否相等:{}".format(np.array_equal(arr,arr2)))print("arry_equal對比兩個數(shù)組與否相等:{}".format(np.array_equal(arr,arr3)))#4#shuffle()用來打亂數(shù)組的排列,變成隨機排列#注意這個函數(shù)不返回任何東西np.random.shuffle(arr1)print("shuffle函數(shù)打亂arr1后的次序輸出:{}".format(arr1))#5#多維數(shù)組的書寫辦法:與列表的操作不同,多維列表各維度用逗號隔開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ù)組的切片操作,使用冒號索引,切片仍然還是矩陣#0:1其實指的是0一種效果,跟range同樣,行和列的序號仍然是從0開始print("矩陣的第一行的第1個數(shù)的切片矩陣:martrix_1[0,0:1]={}".format(matrix_1[0,0:1]))print("矩陣的第一行的前兩個數(shù)的切片矩陣:martrix_1[0,0:2]={}".format(matrix_1[0,0:2]))print("矩陣的第二行的前兩個數(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合并成覺得數(shù)組arr4:{}".format(arr4))#9#shape()函數(shù)查看數(shù)組對象的屬性:大小print("shape查看數(shù)組元素matrix_1的屬性大?。簕}".format(matrix_1.shape))#dtype返回數(shù)組元素的類型print("dtype返回數(shù)組元素martix_1的元素類型:{}".format(matrix_1.dtype))#10#len()函數(shù)返回數(shù)組的第一維的長度:覺得數(shù)組的元素個數(shù),二維數(shù)組的行數(shù)print("len()返回一維數(shù)組arr4的長度:{}".format(len(arr4)))print("len()返回二維矩陣的第一維度的長度: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ù),用于調節(jié)重塑數(shù)組的構造。6=2*3#這里的2*3可不是按照python的從零開始來的喔?。atrix_2=arr4.reshape((3,2))print("reshape函數(shù)把一種6個元素的一維序列塑造成3*2的矩陣輸出matrix_2:{}".format(matrix_2))#13#transpose()矩陣的轉置:也就是行列交換#同樣也能夠使用Tmatrix_3=matrix_2.transpose()matrix_T=matrix_2.transpose()print("transpose將矩陣轉置為matrix_3:{}".format(matrix_3))print("transpose||T兩種轉置的辦法是同樣的:{}".format(np.array_equal(matrix_3,matrix_T)))#14#newaxis()函數(shù)增加維度:調節(jié)數(shù)組元素位置arr_1=np.array([14,32,13],dtype=float)print("新建數(shù)組arr_1:{},屬性大小為:{}".format(arr_1,arr_1.shape))print("newaxis增加數(shù)組維度:{},屬性大小為:{}".format(arr_1[:,np.newaxis],arr_1[:,np.newaxis].shape))print("newaxis增加數(shù)組維度:{},屬性大小為:{}".format(arr_1[np.newaxis,:],arr_1[np.newaxis,:].shape))#15#concatenate()函數(shù)用于數(shù)組的操作#取決與數(shù)組的維度,多個一維數(shù)組能夠相繼連接,將要連接的多個數(shù)組置于中作為參數(shù)輸入#對于一維數(shù)組函數(shù)不帶任何參數(shù)就默認為是第一種軸#對于二維數(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ù)將三個序列進行連接:{}".format(arr_concat))#二維數(shù)組的操作,行連接就是行數(shù)增加,列連接就是列增加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ù)將兩個數(shù)列按照行或者列進行連接:axis0={},axis1={}".format(arr_concat_axis0,arr_concat_axis1))#16#numpy的linalg子模塊,實現(xiàn)了矩陣的多個線性代數(shù)運算。#計算矩陣的行列式的值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)計算辦法[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#統(tǒng)計學與數(shù)學函數(shù)#數(shù)組元素統(tǒng)計信息函數(shù):聚合型運算:求和,均值,中位數(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ù)組轉換成列表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#用現(xiàn)有數(shù)組創(chuàng)立新的對象,使用"copy"函數(shù),易錯點1arr1=arrprint('僅僅復制了指向同一種地址:{}'.format(arr1))arr1=arr.copy()print('這個時候才是創(chuàng)立了對象:{}'.format(arr1))arr1[0]=0print('試圖修改arr1的第一種值:{}'.format(arr1))print('再來看arr是沒有發(fā)生變化的:{}'.format(arr))print('闡明復制成功了!!')#3#用同一種值來覆蓋一組原有的數(shù)組值,使用'fill'函數(shù),用處是作為初始化#fill是個功效命令,返回值固然是0或1,易錯點2arr2=np.array([1,2,3,4,5])print(arr2.fill(1))print(arr2.fill(2))print('fill填充的數(shù)組變化arr2:{}'.format(arr2))#4#使用random隨機初始化元素數(shù)組:permutation內(nèi)的參數(shù)代表數(shù)組長度arr3=np.random.permutation(3)print('random隨機化數(shù)組arr3:{}'.format(arr3))#使用正態(tài)分布normal()函數(shù)進行抽樣一系列數(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條對角線上元素為1的矩陣#從后續(xù)實驗成果來看,對角線的形成是以N、M中較小值為原則生成一種方陣的對角線,#當索引index取值為3時則該方陣對角線向右移動3個單位,當索引index取值為-2時則該方針對角線向左移動2個單位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)print

溫馨提示

  • 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

提交評論