版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
N維數(shù)組1.N維數(shù)組NumPy提供了一個N維數(shù)組類型,即ndarray(n-dimensionalarrayobject),它是一系列同類型數(shù)據(jù)的集合,本章統(tǒng)一稱為數(shù)組。ndarray(本章統(tǒng)一稱為數(shù)組)對象是用于存放同類型元素的多維數(shù)組,其中的每個元素在內(nèi)存中都有相同存儲大小的區(qū)域。1.N維數(shù)組ndarray內(nèi)部結(jié)構(gòu)如下圖所示:謝謝THANKYOU構(gòu)造數(shù)組1.Pythonarray_like對象轉(zhuǎn)換為NumPy數(shù)組array函數(shù)語法規(guī)則:numpy.array(object,dtype=None,*,copy=True,order='K',subok=False,ndmin=0,like=None)->ndarrayimportnumpyasnp
arr1=np.array([6,3,1,0])
arr2=np.array(('2',3,5,0))
arr3=np.array([[1,2.0],[0,0],(1+1j,3.)])
arr4=np.array([(1.+0.j,2.+0.j),[0.+0.j,0.+0.j],(1.+1.j,3.+0.j)])
print('創(chuàng)建一維數(shù)組arr1:\n%s'%arr1)
print('創(chuàng)建一維數(shù)組arr2:\n%s'%arr2)
print('創(chuàng)建二維數(shù)組arr3:\n%s'%arr3)
print('創(chuàng)建二維數(shù)組arr4:\n%s'%arr4)創(chuàng)建一維數(shù)組arr1:[6310]創(chuàng)建一維數(shù)組arr2:['2''3''5''0']創(chuàng)建二維數(shù)組arr3:[[1.+0.j2.+0.j][0.+0.j0.+0.j][1.+1.j3.+0.j]]創(chuàng)建二維數(shù)組arr4:[[1.+0.j2.+0.j][0.+0.j0.+0.j][1.+1.j3.+0.j]]示例:使用array函數(shù)創(chuàng)建ndarray。代碼:運行結(jié)果:1.Pythonarray_like對象轉(zhuǎn)換為NumPy數(shù)組arr1=np.array([1,2,3,4],dtype=complex)print('創(chuàng)建的數(shù)組為:',arr1)#指定ndminarr2=np.array([1,2,3,4],ndmin=2)print('創(chuàng)建的數(shù)組為:',arr2)arr3=np.array([[1,2,3,4],['a',5,6,7],[7,8,9,10]],ndmin=1)print('創(chuàng)建的數(shù)組為:\n%s'%arr3)創(chuàng)建的數(shù)組為:[1.+0.j2.+0.j3.+0.j4.+0.j]創(chuàng)建的數(shù)組為:[[1234]]創(chuàng)建的數(shù)組為:[['1''2''3''4']['a''5''6''7']['7''8''9''10']]代碼:運行結(jié)果:示例:設(shè)置array函數(shù)的參數(shù)。1.Pythonarray_like對象轉(zhuǎn)換為NumPy數(shù)組2.NumPy原生數(shù)組的創(chuàng)建(1)arange函數(shù)numpy.arange([start,]stop[,step,],dtype=None,*,like=None)示例:使用arange函數(shù)創(chuàng)建數(shù)組。代碼:arr4=np.arange(3,7,2)
print('創(chuàng)建的數(shù)組為:',arr4)運行結(jié)果:創(chuàng)建的數(shù)組為:[35]2.NumPy原生數(shù)組的創(chuàng)建(2)linspace函數(shù)numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)2.NumPy原生數(shù)組的創(chuàng)建(3)logspace函數(shù)numpy.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None,axis=0)2.NumPy原生數(shù)組的創(chuàng)建(4)zeros函數(shù)numpy.zeros(shape,dtype=float,order='C',*,like=None)2.NumPy原生數(shù)組的創(chuàng)建(5)eye函數(shù)numpy.eye(N,M=None,k=0,dtype=float,order='C',*,like=None)2.NumPy原生數(shù)組的創(chuàng)建(6)diag函數(shù)numpy.diag(v,k=0)2.NumPy原生數(shù)組的創(chuàng)建(7)ones函數(shù)numpy.ones(shape,dtype=None,order='C',*,like=None)3.隨機數(shù)創(chuàng)建數(shù)組(1)
random.random函數(shù)生成隨機浮點數(shù)
numpy.random.random(size=None)(2)
random.rand函數(shù)生成服從均勻分布的隨機數(shù)numpy.random.rand(*dn)3.隨機數(shù)創(chuàng)建數(shù)組(3)random.randn函數(shù)生成服從正態(tài)分布的隨機數(shù)numpy.random.randn(*dn)(4)random.randint函數(shù)生成給定上下限范圍的隨機數(shù)numpy.random.randint(low,high=None,size=None,dtype='l')謝謝THANKYOU數(shù)組屬性1.ndarray數(shù)組的主要屬性及其說明屬性說明ndim返回int。數(shù)組的軸(維度)的個數(shù)。Python中,維度的數(shù)量被稱為rank。shape返回tuple。數(shù)組的維度,是一個整數(shù)的元組,表示每個維度中數(shù)組的大小。對于有n行和m列的矩陣,shape將是(n,m)。因此,shape元組的長度就是rank或維度的個數(shù)ndim。size返回int。數(shù)組元素的總數(shù),等于shape的元素的乘積。dtype返回data-type。一個描述數(shù)組中元素類型的對象。可以使用標準的Python類型創(chuàng)建或指定dtype。另外NumPy提供它自己的類型。例如32、16和numpy.float64。itemsize返回int。數(shù)組中每個元素的字節(jié)大小。例如,元素為float64類型的數(shù)組的itemsize為8(=64/8),而complex32類型的數(shù)組的itemsize為4(=32/8)。它等于ndarray.dtype.itemsize。2.代碼示例示例:獲取數(shù)組屬性。代碼:arr1=np.array([[0,1,2,3],[4,5,6,7]])
print('arr1.ndim:',arr1.ndim)
print('arr1.shape:',arr1.shape)
print('arr1.size:',arr1.size)
print('arr1.dtype:',arr1.dtype)
print('arr1.itemsize:',arr1.itemsize)運行結(jié)果:arr1.ndim:2arr1.shape:(2,4)arr1.size:8arr1.dtype:int32arr1.itemsize:4數(shù)據(jù)類型1.NumPy基本數(shù)據(jù)類型數(shù)據(jù)類型說明bool_用一位存儲的布爾類型(值為TRUE或FALSE)int8整數(shù),范圍為?128至127(簡寫i1)int16整數(shù),范圍為?32768至32767(簡寫i2)int32整數(shù),范圍為?231至232-1(簡寫i4)int64整數(shù),范圍為?263至263-1(簡寫i8)uint8無符號整數(shù),范圍為0至255uint16無符號整數(shù),范圍為0至65535uint32無符號整數(shù),范圍為0至232-1uint64無符號整數(shù),范圍為0至264-1float64半精度浮點數(shù)(16位),其中1位表示正負號,5位表示指數(shù),10位表示尾數(shù)(簡寫f2)float32單精度浮點數(shù)(32位),其中1位表示正負號,8位表示指數(shù),23位表示尾數(shù)(簡寫f4)float64或float_單精度浮點數(shù)(64位),其中1位表示正負號,11位表示指數(shù),52位表示尾數(shù)(簡寫f8)complex64復(fù)數(shù),分別用兩個32位浮點數(shù)表示實部和虛部complex128或complex_復(fù)數(shù),分別用兩個64位浮點數(shù)表示實部和虛部1.NumPy基本數(shù)據(jù)類型字符代碼說明b布爾型i(有符號)整型u無符號整型f浮點型c復(fù)數(shù)浮點型mTimedelta(時間增量)MDatetime(日期增量)O(Python)對象S字符串(固定長度的char序列)UUnicodeV原始數(shù)據(jù)(void)NumPy內(nèi)建類型的字符代碼2.常數(shù)數(shù)據(jù)類型轉(zhuǎn)換對于NumPy數(shù)組中的數(shù)據(jù)類型,每一種數(shù)據(jù)類型均有其對應(yīng)的轉(zhuǎn)換函數(shù)。使用轉(zhuǎn)換函數(shù),轉(zhuǎn)換數(shù)據(jù)類型的語法規(guī)則為:numpy.數(shù)據(jù)類型(數(shù)字/列表/元組)3.數(shù)組數(shù)據(jù)類型轉(zhuǎn)換在數(shù)組生成過程中,可以通過指定dtype參數(shù)修改數(shù)組數(shù)據(jù)類型。可以通過如下方式查看數(shù)據(jù)類型:numpy.dtype(object)4.數(shù)據(jù)類型對象(dtype)dtype對象的構(gòu)造方法如下所示:numpy.dtype(object,align,copy)4.數(shù)據(jù)類型對象(dtype)示例:創(chuàng)建自定義數(shù)據(jù)類型。代碼:df=np.dtype([("name",np.str_,40),("age",64),("height",np.float64)])
print('創(chuàng)建數(shù)據(jù)類型為:',df)
print('查看name數(shù)據(jù)類型為:',df["name"])
print('查看name數(shù)據(jù)類型為:',np.dtype(df["name"]))
itemz=np.array([("LiLei",20,175.6),("XiaoMing",21,180.1)],dtype=df)
print('自定義數(shù)據(jù)為:',itemz)運行結(jié)果:創(chuàng)建數(shù)據(jù)類型為:[('name','<U40'),('age','<i8'),('height','<f8')]查看name數(shù)據(jù)類型為:<U40查看name數(shù)據(jù)類型為:<U40自定義數(shù)據(jù)為:[('LiLei',20,175.6)('XiaoMing',21,180.1)]謝謝THANKYOU切片和索引1.切片numpy.slice函數(shù)切片操作(1)numpy.slice(start,stop,step)start:起始下標;stop:終止下標;step:步長。參數(shù)值:整數(shù)。(2)numpy.slice(start,stop)兩個參數(shù)時,代表start、stop,步長默認為1。(3)numpy.slice(stop)僅有一個參數(shù)代表stop:終止下標。2.索引(1)一維數(shù)組索引①[index]index為非負整數(shù)時,從0往后數(shù);index為負整數(shù)時,從-1往前數(shù)。②[start:stop]取值范圍:[start:stop)。③[start:]、[:stop]取值范圍:[start:-1]、[0:stop)。④[start:stop:step]若start<stop,step>0:按照步長(順序)取值,范圍為[start:stop)。若start>stop,step<0:按照步長(從后向前)取值,范圍為[start:stop)。⑤array[start:stop]=[n1,n2,…]修改指定范圍的數(shù)組元素值。2.索引(2)多維數(shù)組索引①[索引1,索引2,…]索引規(guī)則<=維度,從前向后匹配維度。②[…,k]或[:,k]使用…或:表示省略,訪問第k維度。③[…,…,索引k]或[:,:,索引k]使用…或:匹配維度,采用規(guī)則訪問第k維度。④array[索引1,索引2,…]=[[…],[…]…]修改多維數(shù)組元素值,保證元素匹配。2.索引(2)多維數(shù)組索引示例:已知數(shù)組arr.shape為(4,5),使用索引訪問。1-索引訪問,第0行:arr[0]1-索引訪問,第0行第0列:arr[0,0]1-索引訪問,第0至1行、第0至1列:arr[0:2,0:2]1-索引訪問,行步長為2、列步長為-2:arr[::2,::-2]2-索引訪問,所有行的第2列:arr[...,2]2-索引訪問,所有行的第2列第3列:arr[...,2:4]3-索引訪問,所有行的第2列第3列:arr[:,2:4]3-索引訪問,第2行第3行的所有列:arr[2:4,:]3.高級索引(1)整數(shù)索引語法:array[1維索引,2維索引,…],n維索引=[kn1,kn2,…],取出的第一個元素位置為(k11,k21,…,kn1,…)。示例:已知數(shù)組arr.shape為(3,4),使用整數(shù)索引訪問。1-取出數(shù)組四個角:arr[[0,0,2,2],[0,3,0,3]]2-取出數(shù)組四個角:arr[[[0,0],[2,2]],[[0,3],[0,3]]]3.高級索引(2)布爾索引通過布爾數(shù)組來索引目標數(shù)組,獲取符合指定條件的元素的數(shù)組。語法:array[array的布爾表達式],[]內(nèi)的array代表每個元素。布爾表達式中常用的比較運算符包括:>、<、>=、<=、==、!=、numpy.isnan、numpy.iscomplex()3.高級索引(3)花式索引①array[[i0,i1,…]][]內(nèi)的i0、i1代表元素下標,可為負整數(shù)、0、正整數(shù)。②array[numpy.ix_([i0,i1,…],[i0,i1,…])]使用numpy.ix_傳入多個索引數(shù)組,前一組[i0,i1,…]的結(jié)果,作為后一組取值的輸入。
謝謝THANKYOU迭代數(shù)組1.構(gòu)造方法NumPy迭代器對象numpy.nditer提供了一種靈活訪問一個或者多個數(shù)組元素的方式。nditer對象的構(gòu)造方法:numpy.nditer(array,order='C')2.單數(shù)組遍歷使用for語句訪問單個迭代器對象中的元素。forxinnumpy.nditer(a,order='C'):
print(x)示例:單數(shù)組迭代的使用。代碼:arr=np.arange(6)
arr.shape=(2,3)
forxinnp.nditer(arr,order='F'):
print(x,end=",")運行結(jié)果:列優(yōu)先迭代輸出元素:0,3,1,4,2,5,3.廣播數(shù)組迭代如果兩個數(shù)組是可廣播的,nditer組合對象能夠同時迭代它們。當發(fā)生廣播錯誤時,迭代器引發(fā)一個異常,其中包括輸入形狀以幫助診斷問題。語法如下所示:numpy.nditer([arr1,arr2])組合對象能夠同時迭代它們。僅對兩個數(shù)組進行廣播迭代。3.廣播數(shù)組迭代示例:廣播數(shù)組迭代使用。代碼:arr1=np.array([[1,2,3],[4,5,6]])
print('第一個數(shù)組為:')
print(arr1)
print('第二個數(shù)組為:')
arr2=np.array(['a','b','c'])
print(arr2)
print('修改后的數(shù)組為:')
forx,yinnp.nditer([arr1,arr2]):
print("%d:%s"%(x,y),end="")運行結(jié)果:第一個數(shù)組為:[[123][456]]第二個數(shù)組為:['a''b''c']修改后的數(shù)組為:1:a2:b3:c4:a5:b6:c謝謝THANKYOU常量1.
NumPy常用常量名稱及其含義常量名說明inf(正)無窮大。IEEE754中,無窮大相當于正無窮大。inf的別名包括:Inf、Infinity、PINF和infty。NINF負無窮大。IEEE754中,正無窮大不等于負無窮大。nan非數(shù)字(NotaNumber)。NaN的別名包括:NaN和NAN。IEEE754中,NotaNumber不等于無窮大。NZERO負零。IEEE754中,負零被認為是有限數(shù)。PZERO正零。IEEE754中,正零被認為是有限數(shù)。newaxisNone的別名,常用于索引數(shù)組。euler_gamma歐拉常數(shù),又稱歐拉-馬斯克諾尼常數(shù)。γ=0.5772156649015328606065120900824024310421…e自然常數(shù),是自然對數(shù)的基礎(chǔ),又稱歐拉數(shù)、納皮爾的常數(shù)。e=2.7182818284590452353602874713526624977…pi圓周率。pi=3.1415926535897932384626433…2.常量訪問NumPy中常量的訪問方式為:numpy.常量名示例:輸出NumPy常用常量。代碼:print('(正)無窮大:',np.inf)
print('負無窮大:',np.NINF)
print('負無窮大:',np.log(0))
print('負零:',np.NZERO)
print('正零:',np.PZERO)
print('newaxis:',np.newaxisisNone)
print('歐拉常數(shù):',np.euler_gamma)
print('自然常數(shù):',np.e)
print('圓周率:',np.pi)運行結(jié)果:(正)無窮大:inf負無窮大:-inf負無窮大:-inf負零:-0.0正零:0.0newaxis:True歐拉常數(shù):0.5772156649015329自然常數(shù):2.718281828459045圓周率:3.1415926535897933.常量判斷NumPy常用常量的判斷函數(shù)及其說明函數(shù)說明numpy.isinf(object)判斷哪些元素為正或負無窮大。numpy.isposinf(object)判斷哪些元素是正無窮大。numpy.isneginf(object)判斷哪些元素為負無窮大。numpy.isnan(object)判斷哪些元素不是數(shù)字。numpy.isfinite(object)判斷哪些元素是有限的(不是非數(shù)字、正無窮大、負無窮大)。3.常量判斷示例:使用numpy.isinf(object)方法判斷常量。代碼:print(np.isinf(np.PINF))
print(np.isinf(np.array([[1,2,3],[4,5,6]])))
print(np.isinf([np.inf,np.nan]))
print(np.isinf((np.nan,np.NZERO)))運行結(jié)果:True[[FalseFalseFalse][FalseFalseFalse]][TrueFalse][FalseFalse]謝謝THANKYOU變換數(shù)組形態(tài)1.數(shù)組重塑2.數(shù)組合并3.數(shù)組分割1.數(shù)組重塑(1)改變數(shù)組形狀reshape函數(shù)語法規(guī)則:ndarray.reshape(shape,order='C')1.數(shù)組重塑示例:使用reshape函數(shù)修改數(shù)組形狀。代碼:arr=np.arange(12)
print('生成數(shù)組:\n%s'%arr)print('1-改變數(shù)組形狀:\n%s'%arr.reshape((3,4)))print('2-改變數(shù)組形狀:\n%s'%arr.reshape((3,4),order='F'))運行結(jié)果:生成數(shù)組:[01234567891011]1-改變數(shù)組形狀:[[0123][4567][891011]]2-改變數(shù)組形狀:[[0369][14710][25811]]1.數(shù)組重塑(2)數(shù)組展平①ravel函數(shù)語法規(guī)則:ndarray.ravel(order='C')
②flatten函數(shù)語法規(guī)則:ndarray.flatten(order='C')2.數(shù)組合并(1)水平組合numpy.hstack((array1,array2,…))參數(shù):元組,元素為數(shù)組。說明:將多個數(shù)組水平堆疊,堆疊維度的元素個數(shù)必須相同。2.數(shù)組合并示例:使用hstack函數(shù)水平組合數(shù)組。代碼:arr1=np.arange(12).reshape(3,4)
print('數(shù)組1:\n%s'%arr1)
arr2=arr1*3
print('數(shù)組2:\n%s'%arr2)
print('水平堆疊:\n%s'%np.hstack((arr1,arr2)))運行結(jié)果:數(shù)組1:[[0123][4567][891011]]數(shù)組2:[[0369][12151821][24273033]]水平堆疊:[[01230369][456712151821][89101124273033]]2.數(shù)組合并(2)縱向組合numpy.vstack((array1,array2,…)
)參數(shù):元組,元素為數(shù)組。說明:將多個數(shù)組豎直堆疊,堆疊維度的元素個數(shù)必須相同。2.數(shù)組合并示例:使用vstack函數(shù)縱向組合數(shù)組。代碼:arr1=np.arange(12).reshape(3,4)
print('數(shù)組1:\n%s'%arr1)
arr2=arr1*3
print('數(shù)組2:\n%s'%arr2)
print('豎直堆疊:\n%s'%np.vstack((arr1,arr2)))運行結(jié)果:數(shù)組1:[[0123][4567][891011]]數(shù)組2:[[0369][12151821][24273033]]豎直堆疊:[[0123][4567][891011][0369][12151821][24273033]]2.數(shù)組合并(3)自定義組合方向axis示意圖:2.數(shù)組合并(3)自定義組合方向①concatenate函數(shù)numpy.concatenate((array1,array2,…),axis=0)參數(shù):元組,元組中的元素為數(shù)組;axis默認0,沿著0軸組合;axis=1沿著1軸組合。說明:函數(shù)用于沿指定軸連接相同形狀的兩個或多個數(shù)組。2.數(shù)組合并(3)自定義組合方向②stack函數(shù)numpy.stack((array1,array2,…),axis=0)參數(shù):元組,元組中的元素為數(shù)組;axis默認0,沿著0軸組合;axis=1沿著1軸組合。說明:函數(shù)用于沿指定軸連接相同形狀的兩個或多個數(shù)組。3.數(shù)組分割①自定義分割方向numpy.split(array,indices_or_sections,axis)②水平分割numpy.hsplit(array,indices_or_sections),等價于numpy.split
(…,axis=1)③縱向分割numpy.vsplit(array,indices_or_sections),等價于numpy.split
(…,axis=0)3.數(shù)組分割示例:使用函數(shù)分割數(shù)組。代碼:arr=np.arange(16).reshape(4,4)print('二維數(shù)組:\n%s'%arr)print('橫向等分數(shù)組:\n%s'%np.split(arr,2,axis=1))print('縱向等分數(shù)組:\n%s'%np.split(arr,2,axis=0))運行結(jié)果:二維數(shù)組:[[0123][4567][891011][12131415]]橫向等分數(shù)組:[array([[0,1],[4,5],[8,9],[12,13]]),array([[2,3],[6,7],[10,11],[14,15]])]縱向等分數(shù)組:[array([[0,1,2,3],[4,5,6,7]]),array([[8,9,10,11],[12,13,14,15]])]謝謝THANKYOU通函數(shù)(ufunc)ufunc概述:ufunc函數(shù)全稱為通用函數(shù),是一種能夠?qū)?shù)組中的所有元素進行操作的函數(shù),并且都是以NumPy數(shù)組作為輸出,因此不需要對數(shù)組的每一個元素都進行操作。支持數(shù)組廣播,類型轉(zhuǎn)換和其他一些標準功能。在NumPy中,通函數(shù)是“numpy.ufunc類”的實例。1.可用ufuncs概述:目前在NumPy中定義了60多種通用功能,涵蓋了各種各樣的操作。當使用相關(guān)的中綴符號時,在數(shù)組上自動調(diào)用這些ufunc。例如,當寫入a+b并且a或b是ndarray時,在內(nèi)部調(diào)用add(a,b)。1.可用ufuncs(1)數(shù)組的運算常用的運算包括四則運算、比較運算、邏輯運算等,計算時對每個數(shù)組中的元素分別運算,兩個數(shù)組的shape必須相同或可以執(zhí)行廣播。①
算術(shù)運算:加(+)、減(-)、乘(*)、除(/)、冪(**)。②
比較運算:>、<、==、>=、<=、!=。比較運算返回的結(jié)果是一個布爾數(shù)組,每個元素為每個數(shù)組對應(yīng)元素的比較結(jié)果。③
邏輯運算:numpy.all()表示邏輯and,numpy.any()表示邏輯or。運算結(jié)果返回布爾值。1.可用ufuncs示例:數(shù)組的常用運算。代碼:x=np.array([1,2,3])
y=np.array([4,5,6])
print('數(shù)組相加結(jié)果為:',x+y)#數(shù)組相加
print('數(shù)組比較結(jié)果為:',x<y)
print('數(shù)組邏輯運算結(jié)果為:',np.all(x==y))運行結(jié)果:數(shù)組相加結(jié)果為:[579]數(shù)組比較結(jié)果為:[TrueFalseFalse]數(shù)組邏輯運算結(jié)果為:False1.可用ufuncs(2)算術(shù)函數(shù)計算時,兩個數(shù)組的shape必須相同或可以執(zhí)行廣播。NumPy常用算術(shù)函數(shù)如下表所示:函數(shù)說明numpy.add(arr1,arr2)兩個數(shù)組的加法。numpy.subtract(arr1,arr2)兩個數(shù)組的減法。numpy.multiply(arr1,arr2)兩個數(shù)組的乘法。numpy.divide(arr1,arr2)兩個數(shù)組的除法。numpy.reciprocal(arr)返回數(shù)組每個元素的倒數(shù)。numpy.power(arr1,arr2)將第一個輸入數(shù)組中的元素作為底數(shù),計算它與第二個輸入數(shù)組中相應(yīng)元素的冪。numpy.mod(arr1,arr2)計算輸入數(shù)組中相應(yīng)元素的相除后的余數(shù)。1.可用ufuncs(3)三角函數(shù)NumPy提供了對數(shù)組元素進行三角函數(shù)計算,常用函數(shù)如下表所示:函數(shù)說明numpy.sin(array)正弦numpy.arcsin(array)反正弦numpy.cos(array)余弦numpy.arccos(array)反余弦numpy.tan(array)正切numpy.arctan(array)反正切numpy.degrees(array)弧度轉(zhuǎn)換為角度1.可用ufuncs(4)浮動函數(shù)NumPy常用浮動函數(shù),如下表所示:函數(shù)說明numpy.around(arr,decimals=0)arr:數(shù)組decimals:四舍五入的保留位數(shù);0無小數(shù)、負整數(shù)小數(shù)點右側(cè)、正整數(shù)小數(shù)點左側(cè)numpy.floor(arr)向下取整numpy.ceil(arr)向上取整2.廣播廣播是NumPy對不同形狀(shape)的數(shù)組進行數(shù)值計算的方式,廣播常用在四則運算、比較運算、邏輯運算、迭代等數(shù)組操作之前。規(guī)則如下:①讓所有輸入數(shù)組都向其中shape最長的數(shù)組看齊,shape中不足的部分都通過在前面加1補齊。②輸出數(shù)組的shape是輸入數(shù)組shape的各個軸上的最大值。③如果輸入數(shù)組的某個軸和輸出數(shù)組的對應(yīng)軸的長度相同或者其長度為1時,這個數(shù)組能夠用來計算,否則出錯。④當輸入數(shù)組的某個軸的長度為1時,沿著此軸運算時都用此軸上的第一組值。2.廣播(1)一維數(shù)組廣播示例:一維數(shù)組廣播的使用。代碼:print('一維*一維廣播')
arr1=np.array([1,2,3,4])
arr2=np.array([2])
print(arr1.shape,arr2.shape)
print('1-相加:',arr1+arr2)運行結(jié)果:一維*一維廣播(4,)(1,)1-相加:[3456]2.廣播(2)二維數(shù)組廣播假設(shè)a.shape=(4,3)、b.shape=(3),下圖展示了數(shù)組a和數(shù)組b執(zhí)行乘法運算前的廣播。2.廣播(3)廣播數(shù)組迭代如果兩個數(shù)組是可廣播的,numpy.nditer([arr1,arr2])組合對象能夠同時迭代它們。僅對兩個數(shù)組進行廣播迭代。示例:forx,yinnp.nditer([arr1,arr2]):
print("%d:%s"%(x,y),end="")2.廣播(4)廣播新形狀numpy.broadcast_to(array,shape=(…))array:待廣播的數(shù)組;shape:元組,廣播后數(shù)組的形狀。函數(shù)將數(shù)組廣播到新形狀,在原始數(shù)組上返回只讀視圖,即返回后的數(shù)組元素不能修改。2.廣播(4)廣播新形狀示例:將數(shù)組廣播到新形狀。代碼:a=np.arange(4).reshape(1,4)
print('原數(shù)組:',a)
print('調(diào)用broadcast_to函數(shù)之后:')
b=np.broadcast_to(a,(4,4))
print(b)
print(b[0,0])運行結(jié)果:原數(shù)組:[[0123]]調(diào)用broadcast_to函數(shù)之后:[[0123][0123][0123][0123]]0謝謝THANKYOU字符串函數(shù)1.字符串函數(shù)調(diào)用NumPy中對于dtype為numpy.string_或numpy.unicode_的數(shù)組執(zhí)行向量化字符串操作。這些操作基于Python內(nèi)置庫中的標準字符串函數(shù),在字符數(shù)組類(numpy.char)中定義,調(diào)用語法為:numpy.char.函數(shù)名()2.常用字符串函數(shù)及其說明函數(shù)參數(shù)說明add(arr1,arr2)arr1、arr2兩個數(shù)組shape必須一致對兩個數(shù)組的逐個字符串元素進行連接multiply(arr,i)數(shù)組arr的每個元素鏈接i次(整數(shù))返回按元素多重連接后的字符串center(arr,width,fillchar='')數(shù)組arr的元素居中,兩邊用fillchar填充,長度為width居中字符串capitalize(arr)arr數(shù)組or字符串將字符串第一個字母轉(zhuǎn)換為大寫title(arr)arr數(shù)組or字符串將字符串的每個單詞的第一個字母轉(zhuǎn)換為大寫lower(arr)arr數(shù)組or字符串數(shù)組元素轉(zhuǎn)換為小寫upper(arr)arr數(shù)組or字符串數(shù)組元素轉(zhuǎn)換為大寫split(arr,sep=None,maxsplit=None)數(shù)組arr的元素以sep字符為分割標記,最多分割maxsplit次指定分隔符對字符串進行分割,并返回數(shù)組列表splitlines(arr,keepends=None)數(shù)組arr的元素以\r、\n、\r\n分割,僅當keepends=Ture保留分割標記返回元素中的行列表,以換行符分割strip(arr,chars=None)數(shù)組arr的元素開頭和結(jié)尾的chars字符串移除移除元素開頭和結(jié)尾處的特定字符join(sep,seq)sep:連接字符數(shù)組;seq:字符串數(shù)組sep元素個數(shù)<=seq元素個數(shù)通過指定分隔符來連接數(shù)組中的元素replace(arr,old,new,count=None)將數(shù)組arr元素的old字符串,替換為new字符串,替換count個使用新字符串替換字符串中的所有子字符串3.應(yīng)用示例:常用字符串函數(shù)應(yīng)用。代碼:print(np.char.add(['like','don\'tlike'],['python','java']))
print(np.char.multiply(['python','java'],3)
print(np.char.title(['ilikepython','ilikejava']))
print(np.char.splitlines('i\nlikepython?'))
print(np.char.join([':'],['python','java']))運行結(jié)果:['likepython'"don'tlikejava"]['pythonpythonpython''javajavajava']['ILikePython''ILikeJava']['i','likepython?']['p:y:t:h:o:n''j:a:v:a']謝謝THANKYOU文件讀寫1.讀寫二進制格式的數(shù)據(jù)2.讀寫文本格式的數(shù)據(jù)1.讀寫二進制格式的數(shù)據(jù)讀寫二進制格式數(shù)據(jù)時,以wb方式打開文件,存儲時可以省略擴展名,但讀取時不能省略擴展名。(1)save函數(shù)save函數(shù)是以二進制的格式保存數(shù)據(jù),將數(shù)組保存在NumPy的“.npy”格式中。save函數(shù)語法規(guī)則:numpy.save(file,arr,allow_pickle=True,fix_imports=True)1.讀寫二進制格式的數(shù)據(jù)(2)savez函數(shù)savez函數(shù)可以將多個數(shù)組保存到一個“.npz”文件中。savez函數(shù)語法規(guī)則:numpy.savez(file,*args,**kwds)1.讀寫二進制格式的數(shù)據(jù)(3)load函數(shù)load函數(shù)是從二進制的文件中讀取數(shù)據(jù)。load函數(shù)語法規(guī)則:data=numpy.load(file,mmap_mode=None,allow_pickle=False,fix_imports=True,encoding='ASCII',*,max_header_size=format._MAX_HEADER_SIZE)判斷數(shù)組個數(shù)可以使用Python內(nèi)建函數(shù)len(data)。訪問讀取的數(shù)組,可以使用data['arr_0']、data['arr_1']等。注意,這里的arr_0、arr_1應(yīng)與savez函數(shù)的數(shù)組名相對應(yīng)。1.讀寫二進制格式的數(shù)據(jù)示例:讀寫二進制格式的文件數(shù)據(jù)。代碼:運行結(jié)果:讀取的數(shù)組為:讀取的數(shù)組為:[[01234][56789]]讀取的數(shù)組對象:NpzFile'./tmp/savez_arr.npz'withkeys:arr_0,arr_1讀取的數(shù)組個數(shù):2讀取的數(shù)組1為:[[123][456]]讀取的數(shù)組2為:[0.0.10.20.30.40.50.60.70.80.9]print('------numpy.save()------')
arr=np.arange(10).reshape(2,5)
np.save("./tmp/save_arr",arr)
print('-----numpy.savez()-------')
arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.arange(0,1.0,0.1)
np.savez('./tmp/savez_arr',arr1,arr2)
print('-----numpy.load()-------')
loaded_data=np.load("./tmp/save_arr.npy")
print('讀取的數(shù)組為:\n%s'%loaded_data)
loaded_data1=np.load("./tmp/savez_arr.npz")
print('讀取的數(shù)組對象:',loaded_data1)
print('讀取的數(shù)組個數(shù):',len(loaded_data1))
print('讀取的數(shù)組1為:\n%s'%loaded_data1['arr_0'])
print('讀取的數(shù)組2為:',loaded_data1['arr_1'])2.讀寫文本格式的數(shù)據(jù)(1)savetxt函數(shù)numpy.savetxt(fname,X,fmt='%.18e',delimiter='',newline='\n',header='',footer='',comments='#',encoding=None)(2)loadtxt函數(shù)numpy.loadtxt(fname,dtype=float,comments='#',delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding='bytes',max_rows=None,*,quotechar=None,like=None)2.讀寫文本格式的數(shù)據(jù)(3)genfromtxt函數(shù)numpy.genfromtxt(fname,dtype=float,comments='#',delimiter=None,skip_header=0,skip_footer=0,converters=None,missing_values=None,filling_values=None,usecols=None,names=None,excludelist=None,deletechars=''.join(sorted(NameValidator.defaultdeletechars)),replace_space='_',autostrip=False,case_sensitive=True,defaultfmt="f%i",unpack=None,usemask=False,loose=True,invalid_raise=True,max_rows=None,encoding='bytes',*,ndmin=0,like=None)2.讀寫文本格式的數(shù)據(jù)arr=np.arange(0,12,0.5).reshape(4,-1)
print('------numpy.savetxt()------')
np.savetxt("./tmp/arr.txt",arr,fmt="%.2f",delimiter=",")運行結(jié)果:------numpy.savetxt()------------numpy.loadtxt()------讀取的數(shù)組為:[[0.0.51.1.52.2.5][3.3.54.4.55.5.5][6.6.57.7.58.8.5][9.9.510.10.511.11.5]]------numpy.genfromtxt()------讀取的數(shù)組為:[[0.0.51.1.52.2.5][3.3.54.4.55.5.5][6.6.57.7.58.8.5][9.9.510.10.511.11.5]]示例:文本格式數(shù)據(jù)的讀寫。代碼:print('------numpy.loadtxt()------')
loaded_data=np.loadtxt("./tmp/arr.txt",delimiter=",")
print('讀取的數(shù)組為:\n%s'%loaded_data)print('------numpy.genfromtxt()------')
loaded_data=np.genfromtxt("./tmp/arr.txt",delimiter=",")
print('讀取的數(shù)組為:\n%s'%loaded_data)謝謝THANKYOU統(tǒng)計與分析1.排序在NumPy中,直接排序經(jīng)常使用sort函數(shù),間接排序經(jīng)常使用argsort函數(shù)和lexsort函數(shù)。NumPy提供的主要排序算法及其說明如下表所示。種類速度最壞情況工作空間穩(wěn)定性'quicksort'(快速排序)1O(n^2)0否'mergesort'(歸并排序)2O(n*log(n))~n/2是'heapsort'(堆排序)3O(n*log(n))0否1.排序(1)sort函數(shù)numpy.sort(a,axis=-1,kind='quicksort',order=None)sort函數(shù)調(diào)用后改變原始數(shù)組,無返回值。1.排序示例:使用sort函數(shù)對數(shù)組排序。代碼:a=np.array([[3,7],[9,1]])
print('1-調(diào)用sort()函數(shù):\n%s'%np.sort(a))
print('2-展開排序:')
print(np.sort(a,axis=None))
print('3-按列排序:')
print(np.sort(a,axis=0))
#在sort函數(shù)中排序字段
dt=np.dtype([('name','S10'),('age',int)])
a=np.array([("raju",21),("anil",25),("ravi",17),("amar",27)],dtype=dt)
print('數(shù)組是:\n%s'%a)
print('按name排序:')
print(np.sort(a,order='name'))運行結(jié)果:1-調(diào)用sort()函數(shù):[[37][19]]2-展開排序:[1379]3-按列排序:[[31][97]]數(shù)組是:[(b'raju',21)(b'anil',25)(b'ravi',17)(b'amar',27)]按name排序:[(b'amar',27)(b'anil',25)(b'raju',21)(b'ravi',17)]1.排序(2)argsort函數(shù)
numpy.argsort(a,axis=-1,kind='quicksort',order=None)返回數(shù)組值從小到大的索引值。1.排序(3)lexsort函數(shù)
numpy.lexsort(keys,axis=None)lexsort函數(shù)對多個序列進行排序,排序時優(yōu)先照顧靠后的列。2.去重與重復(fù)數(shù)據(jù)(1)去重unique函數(shù)找出數(shù)組中的唯一值,并返回已排序結(jié)果。numpy.unique(ar,return_index=False,return_inverse=False,return_counts=False,axis=None,*,equal_nan=True)2.去重與重復(fù)數(shù)據(jù)示例:使用unique函數(shù)對數(shù)組去重。代碼:names=np.array(['北京冬奧精神','胸懷大局','自信開放','迎難而上','追求卓越','共創(chuàng)未來','自信開放','迎難而上'])
print('創(chuàng)建的數(shù)組為:',names)
print('1-去重后的數(shù)組為:',np.unique(names))
print('2-去重后的數(shù)組為:',np.unique(names,return_index=True))
print('3-去重后的數(shù)組為:',np.unique(names,return_index=True,return_inverse=True))
print('4-去重后的數(shù)組為:',np.unique(names,return_inverse=True,return_counts=True))
#跟np.unique等價的Python代碼實現(xiàn)過程
print('去重后的數(shù)組為:',sorted(set(names)))2.去重與重復(fù)數(shù)據(jù)運行結(jié)果:創(chuàng)建的數(shù)組為:['北京冬奧精神''胸懷大局''自信開放''迎難而上''追求卓越''共創(chuàng)未來''自信開放''迎難而上']1-去重后的數(shù)組為:['共創(chuàng)未來''北京冬奧精神''胸懷大局''自信開放''迎難而上''追求卓越']2-去重后的數(shù)組為:(array(['共創(chuàng)未來','北京冬奧精神','胸懷大局','自信開放','迎難而上','追求卓越'],dtype='<U6'),array([5,0,1,2,3,4],dtype=int64))3-去重后的數(shù)組為:(array(['共創(chuàng)未來','北京冬奧精神','胸懷大局','自信開放','迎難而上','追求卓越'],dtype='<U6'),array([5,0,1,2,3,4],dtype=int64),array([1,2,3,4,5,0,3,4],dtype=int64))4-去重后的數(shù)組為:(array(['共創(chuàng)未來','北京冬奧精神','胸懷大局','自信開放','迎難而上','追求卓越'],dtype='<U6'),array([1,2,3,4,5,0,3,4],dtype=int64),array([1,1,1,2,2,1],dtype=int64))去重后的數(shù)組為:['共創(chuàng)未來','北京冬奧精神','胸懷大局','自信開放','迎難而上','追求卓越']2.去重與重復(fù)數(shù)據(jù)(1)重復(fù)數(shù)據(jù)①title函數(shù)把一組數(shù)據(jù)重復(fù)若干次,遵循廣播規(guī)則。shape中不足的部分都通過在前面加1補齊。
numpy.title(A,reps)A:指定重復(fù)的數(shù)組,reps:維度的指定重復(fù)次數(shù)。2.去重與重復(fù)數(shù)據(jù)(1)重復(fù)數(shù)據(jù)②repeat函數(shù)repeat函數(shù)將數(shù)組按照指定的軸,進行重復(fù)。
ndarray.repeat(repeats,axis=None)ndarray:指定需要重復(fù)的數(shù)組,repeats:指定重復(fù)次數(shù),axis:指定沿著按個軸重復(fù)。2.去重與重復(fù)數(shù)據(jù)示例:使用repeat函數(shù)重復(fù)數(shù)組。代碼:arr=np.arange(9).reshape(3,3)
print('創(chuàng)建的數(shù)組為:\n%s'%arr)
print('1-重復(fù)后數(shù)組為:\n%s’%arr.repeat(2,axis=0))
print('2-重復(fù)后數(shù)組為:\n%s'%arr.repeat(2,axis=1))運行結(jié)果:創(chuàng)建的數(shù)組為:[[012][345][67
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 32150-2025工業(yè)企業(yè)溫室氣體排放核算和報告通則
- 四川省涼山州2025-2026學(xué)年八年級上學(xué)期期末考試物理試題(含答案)
- 養(yǎng)老院入住老人活動組織與實施制度
- 企業(yè)員工培訓(xùn)與職業(yè)發(fā)展目標制度
- 老年終末期尿失禁護理方案評價
- 激勵數(shù)字技術(shù)研發(fā)投入機制建設(shè)
- 2025年湖南懷化迎賓館招聘筆試真題
- 井下電泵作業(yè)工崗前崗中技能考核試卷含答案
- 齒軌車司機安全意識強化模擬考核試卷含答案
- 膠狀化妝品制造工安全意識強化考核試卷含答案
- DB21-T 4279-2025 黑果腺肋花楸農(nóng)業(yè)氣象服務(wù)技術(shù)規(guī)程
- 2026年上海高考英語真題試卷+解析及答案
- 2024-2025學(xué)年湖北省咸寧市高二生物學(xué)上冊期末達標檢測試卷及答案
- 初會經(jīng)濟法真題
- 池塘承包權(quán)合同
- JTG F40-2004 公路瀝青路面施工技術(shù)規(guī)范
- 三片飲料罐培訓(xùn)
- 副園長個人發(fā)展規(guī)劃
- 第九屆、第十屆大唐杯本科AB組考試真總題庫(含答案)
- 統(tǒng)編部編版九年級下冊歷史全冊教案
- 商業(yè)地產(chǎn)策劃方案+商業(yè)地產(chǎn)策劃方案基本流程及-商業(yè)市場調(diào)查報告(購物中心)
評論
0/150
提交評論