1、Numpy常用方法使用大全(超詳細)

按需策劃可以根據(jù)自己的需求進行定制,做網(wǎng)站、成都網(wǎng)站建設構思過程中功能建設理應排到主要部位公司做網(wǎng)站、成都網(wǎng)站建設的運用實際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實際意義
1、Series和DataFrame簡單入門
2、Pandas操作CSV文件的讀寫
3、Pandas處理DataFrame,Series進行作圖
1、Matplotlib繪圖之屬性設置
2、Matplotlib繪制誤差條形圖、餅圖、等高線圖、3D柱形圖
1、層次分析法(AHP)——算數(shù)平均值法、幾何平均值法、特征值法(Python實現(xiàn),超詳細注釋)
2、Python實現(xiàn)TOPSIS分析法(優(yōu)劣解距離法)
3、Python實現(xiàn)線性插值和三次樣條插值
4、Python實現(xiàn)線性函數(shù)的擬合算法
5、Python實現(xiàn)統(tǒng)計描述以及計算皮爾遜相關系數(shù)
6、Python實現(xiàn)迪杰斯特拉算法和貝爾曼福特算法求解最短路徑
Python有一些繪圖的功能,使用turtle模塊。
在命令行輸入
python.exe -m turtledemo
可以打開Python安裝時,系統(tǒng)自帶的一些演示程序。
感覺功能還是比較多的。
程序實現(xiàn)其實還是比較簡單,主要是得搞懂倒是給的文獻,還得跟導師交流如何演示出效果。
matplotlib 是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應用程序中。
它的文檔相當完備,并且Gallery頁面中有上百幅縮略圖,打開之后都有源程序。因此如果你需要繪制某種類型的圖,只需要在這個頁面中瀏覽/復制/粘貼一下,基本上都能搞定。
在Linux下比較著名的數(shù)據(jù)圖工具還有gnuplot,這個是免費的,Python有一個包可以調用gnuplot,但是語法比較不習慣,而且畫圖質量不高。
而?Matplotlib則比較強:Matlab的語法、python語言、latex的畫圖質量(還可以使用內嵌的latex引擎繪制的數(shù)學公式)。
本文目錄
1.?Matplotlib.pyplot快速繪圖
2.?面向對象畫圖
3.?Matplotlib.pylab快速繪圖
4.?在圖表中顯示中文
5.?對LaTeX數(shù)學公式的支持
6.?對數(shù)坐標軸
7.?學習資源
Matplotlib.pyplot快速繪圖
快速繪圖和面向對象方式繪圖
matplotlib實際上是一套面向對象的繪圖庫,它所繪制的圖表中的每個繪圖元素,例如線條Line2D、文字Text、刻度等在內存中都有一個對象與之對應。
為了方便快速繪圖matplotlib通過pyplot模塊提供了一套和MATLAB類似的繪圖API,將眾多繪圖對象所構成的復雜結構隱藏在這套API內部。我們只需要調用pyplot模塊所提供的函數(shù)就可以實現(xiàn)快速繪圖以及設置圖表的各種細節(jié)。pyplot模塊雖然用法簡單,但不適合在較大的應用程序中使用。
為了將面向對象的繪圖庫包裝成只使用函數(shù)的調用接口,pyplot模塊的內部保存了當前圖表以及當前子圖等信息。當前的圖表和子圖可以使用plt.gcf()和plt.gca()獲得,分別表示"Get Current Figure"和"Get Current Axes"。在pyplot模塊中,許多函數(shù)都是對當前的Figure或Axes對象進行處理,比如說:
plt.plot()實際上會通過plt.gca()獲得當前的Axes對象ax,然后再調用ax.plot()方法實現(xiàn)真正的繪圖。
可以在Ipython中輸入類似"plt.plot??"的命令查看pyplot模塊的函數(shù)是如何對各種繪圖對象進行包裝的。
配置屬性
matplotlib所繪制的圖表的每個組成部分都和一個對象對應,我們可以通過調用這些對象的屬性設置方法set_*()或者pyplot模塊的屬性設置函數(shù)setp()設置它們的屬性值。
因為matplotlib實際上是一套面向對象的繪圖庫,因此也可以直接獲取對象的屬性
配置文件
繪制一幅圖需要對許多對象的屬性進行配置,例如顏色、字體、線型等等。我們在繪圖時,并沒有逐一對這些屬性進行配置,許多都直接采用了matplotlib的缺省配置。
matplotlib將這些缺省配置保存在一個名為“matplotlibrc”的配置文件中,通過修改配置文件,我們可以修改圖表的缺省樣式。配置文件的讀入可以使用rc_params(),它返回一個配置字典;在matplotlib模塊載入時會調用rc_params(),并把得到的配置字典保存到rcParams變量中;matplotlib將使用rcParams字典中的配置進行繪圖;用戶可以直接修改此字典中的配置,所做的改變會反映到此后創(chuàng)建的繪圖元素。
繪制多子圖(快速繪圖)
Matplotlib 里的常用類的包含關系為?Figure - Axes - (Line2D, Text, etc.)一個Figure對象可以包含多個子圖(Axes),在matplotlib中用Axes對象表示一個繪圖區(qū)域,可以理解為子圖。
可以使用subplot()快速繪制包含多個子圖的圖表,它的調用形式如下:
subplot(numRows, numCols, plotNum)
subplot將整個繪圖區(qū)域等分為numRows行* numCols列個子區(qū)域,然后按照從左到右,從上到下的順序對每個子區(qū)域進行編號,左上的子區(qū)域的編號為1。如果numRows,numCols和plotNum這三個數(shù)都小于10的話,可以把它們縮寫為一個整數(shù),例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的區(qū)域中創(chuàng)建一個軸對象。如果新創(chuàng)建的軸和之前創(chuàng)建的軸重疊的話,之前的軸將被刪除。
subplot()返回它所創(chuàng)建的Axes對象,我們可以將它用變量保存起來,然后用sca()交替讓它們成為當前Axes對象,并調用plot()在其中繪圖。
繪制多圖表(快速繪圖)
如果需要同時繪制多幅圖表,可以給figure()傳遞一個整數(shù)參數(shù)指定Figure對象的序號,如果序號所指定的Figure對象已經(jīng)存在,將不創(chuàng)建新的對象,而只是讓它成為當前的Figure對象。
import numpy as np
import matplotlib.pyplot as plt
plt.figure(1) # 創(chuàng)建圖表1
plt.figure(2) # 創(chuàng)建圖表2
ax1 = plt.subplot(211) # 在圖表2中創(chuàng)建子圖1
ax2 = plt.subplot(212) # 在圖表2中創(chuàng)建子圖2
x = np.linspace(0, 3, 100)
for i in xrange(5):
plt.figure(1) ?#? # 選擇圖表1
plt.plot(x, np.exp(i*x/3))
plt.sca(ax1) ? #? # 選擇圖表2的子圖1
plt.plot(x, np.sin(i*x))
plt.sca(ax2) ?# 選擇圖表2的子圖2
plt.plot(x, np.cos(i*x))
plt.show()
在圖表中顯示中文
matplotlib的缺省配置文件中所使用的字體無法正確顯示中文。為了讓圖表能正確顯示中文,可以有幾種解決方案。
在程序中直接指定字體。
在程序開頭修改配置字典rcParams。
修改配置文件。
matplotlib輸出圖象的中文顯示問題
上面那個link里的修改matplotlibrc方式,我試了好幾次都沒成功。能work的一個比較簡便粗暴的方式(但不知道有沒有副作用)是,1.找到字體目錄YOURPYTHONHOME\Lib\site-packages\matplotlib\mpl-data\fonts\ttf下的Vera.ttf。這里我們用中文楷體(可以從windows/system32/fonts拷貝過來,對于win8字體文件不是ttf的可以從網(wǎng)上下一個微軟雅黑),直接張貼到前面的ttf目錄下,然后更名為Vera.ttf。2.?中文字符串用unicode格式,例如:u''測試中文顯示'',代碼文件編碼使用utf-8 加上" #?coding = utf-8 ?"一行。
面向對象畫圖
matplotlib API包含有三層,Artist層處理所有的高層結構,例如處理圖表、文字和曲線等的繪制和布局。通常我們只和Artist打交道,而不需要關心底層的繪制細節(jié)。
直接使用Artists創(chuàng)建圖表的標準流程如下:
創(chuàng)建Figure對象
用Figure對象創(chuàng)建一個或者多個Axes或者Subplot對象
調用Axies等對象的方法創(chuàng)建各種簡單類型的Artists
import?matplotlib.pyplot as plt
X1 = range(0, 50)?Y1 = [num**2 for num in X1] # y = x^2?X2 = [0, 1]?Y2 = [0, 1] # y = x
Fig = plt.figure(figsize=(8,4)) # Create a `figure'?instance?Ax = Fig.add_subplot(111) # Create a `axes'?instance?in the figure?Ax.plot(X1, Y1, X2, Y2) # Create a Line2D?instance?in the axes
Fig.show()?Fig.savefig("test.pdf")
【相關學習推薦:python教程】
python做數(shù)學函數(shù)題的方法:
1、打開CMD命令行以后我們先來看一個求平方的函數(shù),如下圖所示,用pow即可計算某個數(shù)的幾次方
2、接下來我們可以運用abs函數(shù)來求某一個數(shù)的絕對值,如下圖所示
3、在遇到小數(shù)的時候,我們經(jīng)常需要舍棄小數(shù)的部分直接用整數(shù),那么就可以用floor函數(shù)了,但是直接用的話是報錯的,如下圖所示
4、這個時候我們需要導入math模塊,因為floor函數(shù)在math模塊中,如下圖所示
5、接下來我們還會用到math函數(shù)中的開平方根的函數(shù)sqrt,如下圖所示
6、最后我們在應用數(shù)學函數(shù)的時候可以直接將起賦值給某個變量,然后直接調用該變量即可,如下圖所示
1.Numpy庫
是Python開源的數(shù)值計算擴展工具,提供了Python對多維數(shù)組的支持,能夠支持高級的維度數(shù)組與矩陣運算。此外,針對數(shù)組運算也提供了大量的數(shù)學函數(shù)庫,Numpy是大部分Python科學計算的基礎,具有很多功能。
2.Pandas庫
是一個基于Numpy的數(shù)據(jù)分析包,為了解決數(shù)據(jù)分析任務而創(chuàng)建的。Pandas中納入了大量庫和標準的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需要的函數(shù)和方法,使用戶能快速便捷地處理數(shù)據(jù)。
3.Matplotlib庫
是一個用在Python中繪制數(shù)組的2D圖形庫,雖然它起源于模仿MATLAB圖形命令,但它獨立于MATLAB,可以通過Pythonic和面向對象的方式使用,是Python中Z出色的繪圖庫。主要用純Python語言編寫的,它大量使用Numpy和其他擴展代碼,即使對大型數(shù)組也能提供良好的性能。
4.Seaborn庫
是Python中基于Matplotlib的數(shù)據(jù)可視化工具,提供了很多高層封裝的函數(shù),幫助數(shù)據(jù)分析人員快速繪制美觀的數(shù)據(jù)圖形,從而避免了許多額外的參數(shù)配置問題。
5.NLTK庫
被稱為使用Python進行教學和計算語言學工作的Z佳工具,以及用自然語言進行游戲的神奇圖書館。NLTK是一個領先的平臺,用于構建使用人類語言數(shù)據(jù)的Python程序,它為超過50個語料庫和詞匯資源提供了易于使用的接口,還提供了一套文本處理庫,用于分類、標記化、詞干化、解析和語義推理、NLP庫的包裝器和一個活躍的討論社區(qū)。
這是math模塊的一個函數(shù)
pow() 源于英文power,返回給定數(shù)字的乘冪
所以我們執(zhí)行math.pow()示例:
注意:math 模塊則會把參數(shù)轉換為 float。
math是非常常用的數(shù)學計算包,其中math.pow()語法如下
參數(shù)說明:
等同于寫法
但注意math函數(shù)返回的是浮點數(shù),后者可能返回整數(shù)
其他常用的數(shù)學函數(shù)有:
python2 有cmp(x,y)函數(shù),python3移除了cmp,新增了 operator模塊,提供了如下比較方法
作為比較函數(shù)
在處理數(shù)字時使用數(shù)學函數(shù)能更高效的獲取計算結果。
對基礎運行環(huán)境有疑問的,推薦參考: python函數(shù)深入淺出 0.基礎篇
當前名稱:python數(shù)學函數(shù)繪圖,python繪制圖形函數(shù)庫
地址分享:http://chinadenli.net/article17/dsiedgj.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、定制開發(fā)、企業(yè)建站、品牌網(wǎng)站建設、品牌網(wǎng)站制作、服務器托管
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)