版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《Python數(shù)據(jù)分析與可視化》?精品課件合集Python數(shù)據(jù)分析與可視化第10章SciPy科學(xué)計(jì)算基礎(chǔ)第10章SciPy科學(xué)計(jì)算基礎(chǔ)Scipy是一款用于數(shù)學(xué)、科學(xué)和工程領(lǐng)域的Python工具包,可以處理插值、積分、優(yōu)化、圖像處理、常微分方程數(shù)值解的求解、信號(hào)處理等問題。304一月202510.1SciPy中的常數(shù)與特殊函數(shù)1SciPy的constants模塊SciPy的constants模塊包含了大量用于科學(xué)計(jì)算的常數(shù)。404一月2025In[1]fromscipyimportconstantsasCprint(C.pi)#圓周率print(C.golden)#黃金比例print(C.c)#真空中的光速print(C.h)#普朗克常數(shù)print(C.mile)#一英里等于多少米print(C.inch)#一英寸等于多少米print(C.degree)#一度等于多少弧度print(C.minute)#一分鐘等于多少秒print(C.g)#標(biāo)準(zhǔn)重力加速度out[1]【例10-1】顯示constants模塊中的常用常數(shù)。10.1SciPy中的常數(shù)與特殊函數(shù)2
SciPy的special模塊SciPy的special模塊包含了大量函數(shù)庫,包括基本數(shù)學(xué)函數(shù)、特殊函數(shù)以及NumPy中的所有函數(shù)。504一月2025【例10-2】special模塊中的常用函數(shù)。fromscipyimportspecialasSprint(S.cbrt(8))#立方根print(S.exp10(3))#10**3print(S.sindg(90))#正弦函數(shù),參數(shù)為角度print(S.round(3.1))#四舍五入函數(shù)print(S.round(3.5))print(S.round(3.499))print(S.comb(5,3))
#從5個(gè)中任選3個(gè)的組合數(shù)print(S.perm(5,3))#排列數(shù)print(S.gamma(4))#gamma函數(shù)print(S.beta(10,200))#beta函數(shù)print(S.sinc(0))#sinc函數(shù)10.2SciPy中的線性代數(shù)運(yùn)算SciPy.linalg是SciPy中實(shí)現(xiàn)線性代數(shù)計(jì)算的模塊,常用的導(dǎo)入方式為:fromscipyimportlinalg在NumPy中,矩陣有矩陣類型和二維數(shù)組兩種表示方法。(1)數(shù)組類型下的基本操作矩陣類型數(shù)據(jù)可以用np.mat()或mat.matrix()創(chuàng)建。【例10-3】矩陣的創(chuàng)建及其簡單運(yùn)算。604一月2025fromscipyimportlinalgimportnumpyasnpA=np.mat('[1,2;3,4]')print('A矩陣為:\n',A)print('A的轉(zhuǎn)置矩陣為:\n',A.T)print('A的逆矩陣為:\n',A.I)10.2SciPy中的線性代數(shù)運(yùn)算704一月2025(2)
矩陣類型下的基本操作矩陣也可以用二維數(shù)組對(duì)象表示,數(shù)組對(duì)象的矩陣操作與矩陣對(duì)象有一定的區(qū)別?!纠?0-4】數(shù)組的創(chuàng)建及其簡單運(yùn)算。M=np.array([[1,2],[3,4]])print('M矩陣為:\n',M)print('M的轉(zhuǎn)置矩陣為:\n',M.T)print('M的逆矩陣為:\n',linalg.inv(M))M矩陣為:[[12][34]]M的轉(zhuǎn)置矩陣為:[[13][24]]M的逆矩陣為:[[-2.1.][1.5-0.5]]10.2SciPy中的線性代數(shù)運(yùn)算804一月20252.線性方程組求解除了通過矩陣的逆求解外可以直接使用linalg.solve()函數(shù)求解而且效率更高。【例10-5】線性方程組求解。In[5]:fromscipyimportlinalgimportnumpyasnpa=np.array([[1,3,5],[2,5,-1],[2,4,7]])b=np.array([10,6,4])x=linalg.solve(a,b)print(x)Out[5]:[-14.315789477.052631580.63157895]10.2SciPy中的線性代數(shù)運(yùn)算904一月20253.行列式的計(jì)算行列式是一個(gè)將方陣映射到標(biāo)量的函數(shù)。linalg.det()可以計(jì)算矩陣的行列式。【例10-6】矩陣行列式的計(jì)算。In[6]:M=np.array([[1,2],[3,4]])linalg.det(M)Out[6]:-2.010.2SciPy中的線性代數(shù)運(yùn)算1004一月20254.范數(shù)行列式是一個(gè)將方陣映射到標(biāo)量的函數(shù)。linalg.det()可以計(jì)算矩陣的行列式。矩陣范數(shù)含義Frobenius矩陣所有元素平方和的平方根L范數(shù)矩陣中每列元素和的最大值-1范數(shù)矩陣中每列元素和的最小值2范數(shù)矩陣的最大奇異值-2范數(shù)矩陣的最小奇異值正無窮范數(shù)矩陣每行元素和的最大值負(fù)無窮范數(shù)矩陣每行元素和的最小值范數(shù)是數(shù)學(xué)上一個(gè)類似“長度”的概念。linalg.norm()函數(shù)可以計(jì)算向量或矩陣的范數(shù)(或者模)。常見范數(shù)及其含義見下表。M=np.array([[1,2],[3,4]])print('M矩陣為:\n',M)print('M矩陣的L范數(shù)為:\n',linalg.norm(M,1))print('M矩陣的2范數(shù)為:\n',linalg.norm(M,2))10.2SciPy中的線性代數(shù)運(yùn)算1104一月20255.特征值求解函數(shù)linalg.eig()可以用來求解特征值和特征向量。In[8]:A=np.array([[1,2],[3,4]])l,v=linalg.eig(A)print(l)print(v)Out[8]:[-0.37228132+0.j5.37228132+0.j][[-0.82456484-0.41597356][0.56576746-0.90937671]]奇異值分解是一個(gè)能適用于任意的矩陣的一種分解的方法,它將M×N的矩陣A分解為10.2SciPy中的線性代數(shù)運(yùn)算1204一月20256.奇異值分解矩陣主對(duì)角線上的元素被稱為奇異值。函數(shù)linalg.svd()可以實(shí)現(xiàn)矩陣的奇異值分解。
【例10-9】矩陣的奇異值分解。fromnumpyimport*data=mat([[1,2,3],[4,5,6]])U,sigma,VT=np.linalg.svd(data)print('U:',U)print('SIGMA:',sigma)print('VT:',VT)
10.3SciPy中的優(yōu)化1304一月2025SciPy.optimize包提供了幾種常用的優(yōu)化算法,包括用來求有/無約束的多元標(biāo)量函數(shù)最小值算法,最小二乘法,求有/無約束的單變量函數(shù)最小值算法,還有解各種復(fù)雜方程的算法。1.
方程求解及求極值使用SciPy.optimize模塊的root和fsolve函數(shù)進(jìn)行數(shù)值求解線性及非線性方程求方程的根。【例10-10】利用root函數(shù)求方程的解。
fromscipy.optimizeimportrootdeffunc(x):returnx*2+2*np.cos(x)sol=root(func,0.3)#0.3估計(jì)初始值print(sol)
10.3SciPy中的優(yōu)化1404一月2025使用fmin,fminbound可以求函數(shù)的極值。【例10-11】函數(shù)極值求解。
importnumpyasnpfrommatplotlibimportpyplotaspltfromSciPy.optimizeimportfmin,fminbounddeff(x):returnx**2+10*np.sin(x)+1x=np.linspace(-10,10,num=500)min1=fmin(f,3)#求3附近的極小值min2=fmin(f,0)#求0附近的極小值min_global=fminbound(f,-10,10)#這個(gè)區(qū)域的最小值print(min1)print(min2)print(min_global)plt.plot(x,f(x))plt.show()
10.3SciPy中的優(yōu)化1504一月20252數(shù)據(jù)擬合(1)多項(xiàng)式擬合
10.3SciPy中的優(yōu)化1604一月2025【例10-12】多項(xiàng)式擬合。
In[12]:importmatplotlib.pyplotaspltx=np.linspace(-5,5,20)y=3.5*x+2.1y_noise=y+np.random.randn(20)*2coeff=np.polyfit(x,y_noise,1)plt.plot(x,y_noise,'x',x,coeff[0]*x+coeff[1])plt.show()Out[12]:2數(shù)據(jù)擬合(1)多項(xiàng)式擬合最小二乘擬合(LeastSquares)是一種常用的數(shù)學(xué)優(yōu)化技術(shù),通過最小化誤差的平方和在尋找一個(gè)與數(shù)據(jù)匹配的最佳函數(shù)。要使用最小二乘優(yōu)化,需要先定義誤差函數(shù):其中,p表示要估計(jì)的真實(shí)參數(shù),x是函數(shù)的輸入,y表示輸入對(duì)應(yīng)的數(shù)據(jù)值。最小二乘估計(jì)對(duì)應(yīng)的函數(shù)為optimize.leastsq(),可以利用該函數(shù)和定義的誤差函數(shù),對(duì)真實(shí)參數(shù)進(jìn)行最小二乘估計(jì)。
10.3SciPy中的優(yōu)化1704一月20252數(shù)據(jù)擬合(2)最小二乘擬合deferrf(p,x,y): returny-func(x,*p)
10.3SciPy中的優(yōu)化1804一月2025【例10-14】最小二乘估計(jì)示例。fromscipyimportoptimizedefmyfunc(x,a,b,w,t):returna*np.exp(-b*np.sin(w*x+t))x=np.linspace(0,2*np.pi)par=[3,2,1.25,np.pi/4]y=myfunc(x,*par)y_noise=y+0.8*np.random.randn(len(y))deferrf(p,x,y):returny-myfunc(x,*p)c,rv=optimize.leastsq(errf,[1,1,1,1],args=(x,y_noise))#c返回找到的最小二乘估計(jì)plt.plot(x,y_noise,'x',x,y,x,myfunc(x,*c),':')plt.legend(['data','actual','leastsq'])plt.show()可以不定義誤差函數(shù),用函數(shù)optimize.curve_fit()直接對(duì)函數(shù)myfunc的參數(shù)直接進(jìn)行擬合。【例10-15】曲線擬合示例。
10.3SciPy中的優(yōu)化1904一月20252數(shù)據(jù)擬合(3)曲線擬合In[15]:p,e=optimize.curve_fit(myfunc,x,y_noise)print('p是對(duì)參數(shù)的估計(jì)值:\n',p)print('e是4個(gè)估計(jì)參數(shù)的協(xié)方差矩陣:\n',e)Out[15]:p是對(duì)參數(shù)的估計(jì)值:[3.282925361.901027391.24788380.78989363]e是4個(gè)估計(jì)參數(shù)的協(xié)方差矩陣:[[0.17453746-0.052480310.01959142-0.06158022][-0.052480310.01606779-0.005729880.01801028][0.01959142-0.005729880.00271714-0.00854062][-0.061580220.01801028-0.008540620.02707182]]10.4SciPy中的稀疏矩陣處理1稀疏矩陣的存儲(chǔ)稀疏矩陣(SparseMatrix)是只有少部分元素值是非零的矩陣。如果按照正常方式存儲(chǔ)所有元素,則這些矩陣將占用巨大空間,因此,稀疏矩陣只保存非零值及對(duì)應(yīng)的位置。SciPy.sparse是SciPy中負(fù)責(zé)稀疏矩陣的模塊。在SciPy中,根據(jù)存儲(chǔ)方式的不同,可以將稀疏矩陣分為以下幾類:bsr_matrix(BlockSparseRowmatrix):分塊存儲(chǔ),基于行coo_matrix(AsparsematrixinCOOrdinateformat):坐標(biāo)形式存儲(chǔ)(COO)csc_matrix(CompressedSparseColumnmatrix):基于列的壓縮存儲(chǔ)(CSC)csr_matrix(CompressedSparseRowmatrix):基于行的壓縮存儲(chǔ)(CSR)dia_matrix(SparsematrixwithDIAgonalstorage):對(duì)角線存儲(chǔ)dok_matrix(DitictionaryOfKeysbasedsparsematrix):基于鍵值對(duì)的存儲(chǔ)lil_matrix(Row-basedlinkedlistsparsematrix):基于行的鏈表存儲(chǔ)2004一月202510.4SciPy中的稀疏矩陣處理2
稀疏矩陣的運(yùn)算由于稀疏矩陣數(shù)據(jù)量大,一般不使用普通矩陣作為參數(shù)來構(gòu)建,而是采用非零數(shù)據(jù)點(diǎn)及坐標(biāo)的形式構(gòu)建?!纠?0-16】稀疏矩陣的基本運(yùn)算。2104一月2025importnumpyasnpfromscipyimportsparsesparse.coo_matrix((2,3))#創(chuàng)建空的稀疏矩陣A=sparse.coo_matrix([[1,2,0],[0,1,0],[2,0,0]])#將普通矩陣轉(zhuǎn)為稀疏矩陣print(A)print(type(A))
#查看A的類型print(type(A.tocsc()))#不同類型的稀疏矩陣可以相互轉(zhuǎn)換v=np.array([1,3,-3])print(A*v)10.4SciPy中的稀疏矩陣處理【例10-17】稀疏矩陣的構(gòu)建。2204一月2025In[17]:data=[1,2,3,4]rows=[0,0,1,2]cols=[0,1,2,2]W=sparse.coo_matrix(data,(rows,cols))print('稀疏矩陣W:\n',W)r,c,d=sparse.find(W)#find()函數(shù)返回非零元素的行、列和具體數(shù)值print('稀疏矩陣W非零值:\n',r,c,d)Out[17]:稀疏矩陣W:(0,0) 1(0,1) 2(0,2) 3(0,3) 4稀疏矩陣W非零值:[0000][0123][1234]10.5SciPy中的圖像處理簡單的介紹一下SciPy在圖像處理方面的應(yīng)用,如果專業(yè)做圖像處理當(dāng)然還是建議使用OpenCV。2304一月20251圖像平滑圖像平滑是指用于突出圖像的寬大區(qū)域、低頻成分、主干部分或抑制圖像噪聲和干擾高頻成分,使圖像亮度平緩漸變,減小突變梯度,改善圖像質(zhì)量的圖像處理方法。圖像平滑的方法包括:插值方法,線性平滑方法,卷積法等。10.5SciPy中的圖像處理【例10-18】ndimage.median_filter實(shí)現(xiàn)中值濾波。2404一月2025importnumpyasnpfromscipyimportndimagefromscipyimportmiscimportmatplotlib.pyplotasplt%matplotlibinlineimage=misc.ascent()aa=plt.subplot(1,3,1)plt.title("title")plt.imshow(image)plt.axis('off')plt.subplot(1,3,2)plt.title("medi_filter")filter=ndimage.median_filter(image,size=10)#使用SciPy的中值濾波處理圖片plt.imshow(filter)plt.axis('off')plt.subplot(1,3,3)plt.title("gausfilter")blurre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年文藝巡回演出藝人行程變更及補(bǔ)償合同3篇
- 二零二五年度鋁扣板產(chǎn)品售后服務(wù)與維修合同4篇
- 2025年水保項(xiàng)目生態(tài)補(bǔ)償金核算與分配合同3篇
- 2025版共享經(jīng)濟(jì)投資合伙人合同范本4篇
- 二零二五年度智能單機(jī)除塵設(shè)備租賃與智能運(yùn)維合同3篇
- 二零二五年度綠色建筑項(xiàng)目綠化配套服務(wù)合同4篇
- 2025年行政單位公務(wù)車租賃及保養(yǎng)維修服務(wù)協(xié)議2篇
- 二零二五版新能源汽車動(dòng)力電池合資協(xié)議范本3篇
- 二零二五年度龍門吊租賃及環(huán)境適應(yīng)性改造服務(wù)協(xié)議4篇
- 二零二五年度礦長勞動(dòng)合同附礦山安全風(fēng)險(xiǎn)評(píng)估合同3篇
- DB-T29-74-2018天津市城市道路工程施工及驗(yàn)收標(biāo)準(zhǔn)
- 小學(xué)一年級(jí)20以內(nèi)加減法混合運(yùn)算3000題(已排版)
- 智慧工廠數(shù)字孿生解決方案
- 病機(jī)-基本病機(jī) 邪正盛衰講解
- 品管圈知識(shí) 課件
- 非誠不找小品臺(tái)詞
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 患者信息保密法律法規(guī)解讀
- 老年人護(hù)理風(fēng)險(xiǎn)防控PPT
- 充電樁采購安裝投標(biāo)方案(技術(shù)方案)
- 醫(yī)院科室考勤表
評(píng)論
0/150
提交評(píng)論