Python實(shí)現(xiàn)曲線擬合操作示例【基于numpy,scipy,matplotlib庫(kù)】
本文實(shí)例講述了Python實(shí)現(xiàn)曲線擬合操作。分享給大家供大家參考,具體如下:
這兩天學(xué)習(xí)了用python來(lái)擬合曲線。
一、環(huán)境配置
本人比較比較懶,所以下載的全部是exe文件來(lái)安裝,安裝按照順利來(lái)安裝。自動(dòng)會(huì)找到python的安裝路徑,一直點(diǎn)下一步就行。還有其他的兩種安裝方式:一種是解壓,一種是pip。我沒(méi)有嘗試,就不亂說(shuō)八道了。
沒(méi)有ArcGIS 環(huán)境的,可以不看下面這段話了。
在配置環(huán)境時(shí)遇見(jiàn)一個(gè)小波折,就是原先電腦裝過(guò)ArcGIS10.2 ,所以其會(huì)默認(rèn)安裝python2.7,而且python是32位的。且其目錄為C:\Python27\ArcGIS10.2,所以引用環(huán)境變量時(shí),要注意。并且在其引用的工具包中本身包含numpy,matplotlib的包。還是很方便的。但是因?yàn)橹跋胗肞yQT來(lái)做曲線擬合的界面,安裝QT時(shí)總是失敗,所以最后放棄使用這個(gè)。在安裝新的python時(shí)注意要把路徑寫(xiě)到上面這個(gè)路徑前面,意思就是說(shuō)在安裝上面的包的時(shí)候會(huì)找默認(rèn)python路徑。我新安裝python路徑為C:\Python2,要不然就會(huì)找到ArcGIS那個(gè)python包路徑下了。
1. 安裝包
python2.7 (32位)https://www.python.org/downloads/
numpy-1.8.1-win32-superpack-python2.7
scipy-0.15.1-win32-superpack-python2.7
matplotlib-1.3.1.win32-py2.7
安裝過(guò)程中遇見(jiàn)的問(wèn)題
提示
numpy是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展,數(shù)學(xué)計(jì)算很方便。
scipy是一款方便、易于使用、專(zhuān)為科學(xué)和工程設(shè)計(jì)的Python工具包.它包括統(tǒng)計(jì),優(yōu)化,整合,線性代數(shù)模塊,傅里葉變換,信號(hào)和圖像處理,常微分方程求解器等等.這次還沒(méi)用到,看介紹很強(qiáng)大,是numpy的升級(jí)版。
matplotlib是Python的一種開(kāi)源的擴(kuò)展可以繪制各種各種的圖表。
二、實(shí)例
曲線擬合的例子
import matplotlib.pyplot as plt import math import numpy as np import random import csv plt.rcParams['font.sans-serif'] = ['SimHei']#設(shè)置顯示中文 fig = plt.figure() ax = fig.add_subplot(111)#將畫(huà)布分割成1行1列,圖像畫(huà)在從左到右從上到下的第1塊 #階數(shù)為6階 order=6 #生成曲線上的各個(gè)點(diǎn) dataMat = np.loadtxt(open("c:\\yandu.csv","rb"),delimiter=",",skiprows=0) size=dataMat.shape num=size[0] trandata=np.transpose(dataMat)#矩陣轉(zhuǎn)置 xa=trandata[0]#得到天數(shù)數(shù)組(橫坐標(biāo)) ya=trandata[1]#實(shí)測(cè)鹽度值數(shù)組 #數(shù)據(jù)篩選,去除鹽度值為零的,提高擬合精度 i=0 x=[] y=[] for yy in ya: if yy>0: xx=xa[i] i+=1 x.append(xx) y.append(yy) #繪制原始數(shù)據(jù) ax.plot(x,y,label=u'原始數(shù)據(jù)',color='m',linestyle='',marker='.') #計(jì)算多項(xiàng)式 c=np.polyfit(x,y,order)#擬合多項(xiàng)式的系數(shù)存儲(chǔ)在數(shù)組c中 yy=np.polyval(c,x)#根據(jù)多項(xiàng)式求函數(shù)值 #進(jìn)行曲線繪制 x_new=np.linspace(0, 365, 2000) f_liner=np.polyval(c,x_new) #ax.plot(x,y,color='m',linestyle='',marker='.') ax.plot(x_new,f_liner,label=u'擬合多項(xiàng)式曲線',color='g',linestyle='-',marker='') # labels標(biāo)簽設(shè)置 ax.set_xlim(0, 366) ax.set_xlabel(u'天') ax.set_ylabel(u'鹽度') ax.set_title(u'鹽度的日變化', bbox={'facecolor':'0.8', 'pad':5}) ax.legend() plt.show()
運(yùn)行結(jié)果:
PS:這里再為大家推薦兩款相似的在線工具供大家參考:
在線多項(xiàng)式曲線及曲線函數(shù)擬合工具:
http://tools.jb51.net/jisuanqi/create_fun
在線繪制多項(xiàng)式/函數(shù)曲線圖形工具:
http://tools.jb51.net/jisuanqi/fun_draw
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python爬蟲(chóng)開(kāi)發(fā)之使用python爬蟲(chóng)庫(kù)requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實(shí)例
這篇文章主要介紹了python爬蟲(chóng)開(kāi)發(fā)之使用python爬蟲(chóng)庫(kù)requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實(shí)例,需要的朋友可以參考下2020-03-03使用OpenCV實(shí)現(xiàn)鼠標(biāo)事件回調(diào)功能并繪制圖形
這篇文章主要為大家詳細(xì)介紹了如何使用OpenCV實(shí)現(xiàn)鼠標(biāo)事件回調(diào)功能,并通過(guò)鼠標(biāo)操作在圖像上繪制圓圈和矩形,感興趣的小伙伴可以了解下2024-11-11Python基于pandas實(shí)現(xiàn)json格式轉(zhuǎn)換成dataframe的方法
這篇文章主要介紹了Python基于pandas實(shí)現(xiàn)json格式轉(zhuǎn)換成dataframe的方法,結(jié)合實(shí)例形式分析了Python使用pandas模塊操作json數(shù)據(jù)轉(zhuǎn)換成dataframe的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-06-06Python3+Pycharm+PyQt5環(huán)境搭建步驟圖文詳解
這篇文章主要介紹了Python3+Pycharm+PyQt5環(huán)境搭建步驟圖文詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05scipy.interpolate插值方法實(shí)例講解
這篇文章主要介紹了scipy.interpolate插值方法介紹,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12使用Python和GDAL給圖片加坐標(biāo)系的實(shí)現(xiàn)思路(坐標(biāo)投影轉(zhuǎn)換)
這篇文章主要介紹了使用Python和GDAL給圖片加坐標(biāo)系的實(shí)現(xiàn)思路(坐標(biāo)投影轉(zhuǎn)換),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03