




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 Python是數據科學家最喜歡的語言之一。Python本身就是一門工程性語言,數據科學家用Python實現的算法,可以直接用在產品中。 Python的科學計算方面相關類庫非常多,常用的有:NumPy、SciPy、Matplotlib、Pandas、StatsModels、Scikit-Learn、Keras、Gensim等。高性能的科學計算類庫NumPy和SciPy,給其他高級算法打了非常好的基礎,Matplotlib讓Python畫圖變得像Matlab一樣簡單。第10章 科學計算 學習重點或難點: NumPy的基本使用 SciPy的基本使用 Matplotlib的基本使用 NumPy是一個
2、定義了數值數組和矩陣類型和它們的基本運算的語言擴展;SciPy是另一種使用NumPy來做高等數學、信號處理、優化、統計和許多其它科學任務的語言擴展;Matplotlib是一個幫助繪圖的語言擴展。NumPy、SciPy、Matplotlib堪稱為Python科學計算的三劍客。第10章 科學計算10.1 NumPy等的安裝10.2 NumPy基本應用10.3 SciPy基本應用10.4 Matplotlib基本應用10.5 數據分析模塊pandas第10章 科學計算10.1 NumPy等的安裝(1)安裝Numpy() cmd管理員模式(啟動命令窗口),輸入:pip install numpy。nu
3、mpy會自己開始下載安裝,等待它提示成功即可。(2)安裝SciPy() 打開 https:/sourceforge.Net/projects/scipy/files/scipy/0.15.1/。有很多個壓縮包,找到適合Python 2.7.x并且下載量比較多的某個exe版,運行之一直下一步就OK。(3)安裝MatPlotLib() cmd管理員模式,直接復制粘貼下面的命令,安裝完成后會提示完成,就OK了。 python -m pip install -U pip setuptools python -m pip install matplotlib 因為MatplotLib的使用需要Numpy
4、的支持,所以應先裝NumPy再裝MatplotLib。10.1 NumPy等的安裝 另外,Numpy、SciPy、MatplotLib也都可以下載它們的exe文件來安裝,下載地址: NumPy:/projects/numpy/files/NumPy/1.9.2/ SciPy:/projects/scipy/files/scipy/0.15.1/ MatPlotLib: /downloads.html 其中,NumPy和SciPy沒有32和64位的區別,MatPlotLib需要根據自己的系統選擇32位和64位的。再次提醒,這三個庫一定都要下載對應版本的exe文件。下載完成后依次安裝就可,它們會自
5、動找到之前安裝好的Python所在的路徑的。 實際上,Numpy、SciPy、MatplotLib的安裝還可以下載安裝包實現。譬如,下載相應的Numpy安裝包(.whl格式的)。安裝時,先進入whl安裝包的存放目錄。再使用命令行安裝:pip install numpy文件名.whl。10.1 NumPy等的安裝 在Linux下安裝Numpy、SciPy、MatplotLib一般通過如下命令實現:1)apt install python-pip/python3-pip #安裝pip 或 pip32)pip/pip3 install numpy #給 Python2.x/Python3.x 安裝3
6、)pip/pip3 install scipy #給 Python2.x 安裝/Python3.x 安裝4)pip/pip3 install matplotlib #給 Python2.x 安裝/Python3.x 安裝 安裝后,證明Numpy、SciPy、MatplotLib是否安裝成功。分別import numpy、import scipy、import matplotlib試著導入。如果沒報錯一般就安裝好了,并可試著使用。 例如: 使用Numpy: import numpy as npprint(np.random.rand(4,4) # 輸出一個隨機的44的矩陣10.2 NumPy基本
7、應用 NumPy提供了兩種基本的對象:ufunc(Universal Function Object)ndarray(N-dimensional array object) ndarray(下文統一稱之為數組)是存儲單一數據類型的多維數組,而ufunc則是能夠對數組進行處理的函數。10.2.1 ndarray對象 示例程序假設用以“import numpy as np”方式導入NumPy函數庫。 這樣,在Python交互操作界面,dir(np)能列出NumPy模塊里定義的所有模塊、變量和函數等的名稱(具體略)。要獲得某個名稱的詳細幫助信息,可以發help命令,如: help(np.array)
8、 就能獲得array函數的詳細幫助信息,包括使用例子等。 后續模塊的學習使用都應該參照這里dir()與help()函數的使用方法。10.2.1 ndarray對象1、創建 首先需要創建數組才能對其進行其它操作。 可以通過給array函數傳遞Python的序列對象創建數組,如果傳遞的是多層嵌套的序列,將創建多維數組(下例中的變量c):10.2.1 ndarray對象 a = np.array(1, 2, 3, 4) b = np.array(5, 6, 7, 8) c = np.array(1, 2, 3, 4,4, 5, 6, 7, 7, 8, 9, 10) b # array(5, 6, 7
9、, 8) carray(1, 2, 3, 4,4, 5, 6, 7,7, 8, 9, 10) c.dtype #dtype(int32) 數組的大小可以通過其shape屬性獲得: a.shape # (4,) c.shape # (3, 4)10.2.1 ndarray對象2、存取元素 數組元素的存取方法和Python的標準方法相同: a = np.arange(10) a5 #5 # 用整數作為下標可以獲取數組中的某個元素 a3:5 # 用范圍作為下標獲取數組的一個切片,包括a3不包括a5array(3, 4) a:5 # array(0, 1, 2, 3, 4) # 省略開始下標,表示從a
10、0開始 a:-1 # 下標可以使用負數,表示從數組后往前數10.2.1 ndarray對象array(0, 1, 2, 3, 4, 5, 6, 7, 8) a2:4 = 100,101 # 下標還可以用來修改元素的值 a # array( 0, 1, 100, 101, 4, 5, 6, 7, 8, 9) a1:-1:2 #范圍中的第三個參數表示步長,2表示隔一個元素取一個元素array( 1, 101, 5, 7) a:-1 #省略范圍的開始下標和結束下標,步長為-1,整個數組頭尾顛倒array( 9, 8, 7, 6, 5, 4, 101, 100, 1, 0) a5:1:-2 # 步長為
11、負數時,開始下標必須大于結束下標array( 5, 101)10.2.1 ndarray對象3、使用整數序列 當使用整數序列對數組元素進行存取時,將使用整數序列中的每個元素作為下標,整數序列可以是列表或者數組。使用整數序列作為下標獲得的數組不和原始數組共享數據空間。10.2.1 ndarray對象 x = np.arange(10,1,-1) x # array(10, 9, 8, 7, 6, 5, 4, 3, 2) x3,3,1,8 #獲取x中下標為3,3,1,8的4個元素,組成一個新數組array(7, 7, 9, 2) b = xnp.array(3,3,-3,8) #下標可以是負數 b
12、2 = 100 b # array(7, 7, 100, 2) x # 由于b和x不共享數據空間,因此x中的值并沒有改變array(10, 9, 8, 7, 6, 5, 4, 3, 2) x3,5,1 = -1, -2, -3 # 整數序列下標也可以用來修改元素的值 x # array(10, -3, 8, -1, 6, -2, 4, 3, 2)10.2.1 ndarray對象4、使用布爾數組 當使用布爾數組b作為下標存取數組x中的元素時,將收集數組x中所有在數組b中對應下標為True的元素。使用布爾數組作為下標獲得的數組不和原始數組共享數據空間,注意這種方式只對應于布爾數組,不能使用布爾列表
13、。10.2.1 ndarray對象 x = np.arange(5,0,-1) x # array(5, 4, 3, 2, 1) xnp.array(True, False, True, False, False) # array(5, 3) # 布爾數組中下標為0、2的元素為True,因此獲取x中下標為0、2的元素 xTrue, False, True, False, False # 如果是布爾列表,則把True當作1, False當作0,按照整數序列方式獲取x中的元素,如:x1, 0,1, 0, 0,則得:array(4, 5, 4, 5, 5) xnp.array(True, False
14、, True, True, False)array(5, 3, 2) xnp.array(True, False, True, True, False) = -1, -2, -3 # 布爾數組下標也可以用來修改元素 x # array(-1, 4, -2, -3, 1)10.2.1 ndarray對象5、多維數組 多維數組的存取和一維數組類似,因為多維數組有多個軸,因此它的下標需要用多個值來表示,NumPy采用元組(Tuple)作為數組的下標。如圖10-1所示,a為一個6 * 6的數組,圖中給出了各個下標以及其對應的選擇區域。 元組不需要圓括號。雖然前面經常在Python中用圓括號將元組括起來
15、,但是其實元組的語法定義只需要用逗號隔開即可,例如 x,y=y,x 就是用元組交換變量值的一個例子。10.2.1 ndarray對象 如何創建這個數組?也許會對如何創建a這樣的數組感到好奇,數組a實際上是一個加法表,縱軸的值為0, 10, 20, 30, 40, 50;橫軸的值為0, 1, 2, 3, 4, 5。縱軸的每個元素都和橫軸的每個元素求和,就得到圖中所示的數組a。可以用下面的語句創建它,至于其原理這里略: np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)array( 0, 1, 2, 3, 4, 5, 10, 11, 12,
16、13, 14, 15, 20, 21, 22, 23, 24, 25, 30, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 50, 51, 52, 53, 54, 55)10.2.2 ufunc運算 ufunc是universal function的縮寫,它是一種能對數組的每個元素進行操作的函數。NumPy內置的許多ufunc函數都是在C語言級別實現的,因此它們的計算速度非常快。10.2.2 ufunc運算 來看一個例子: x = np.linspace(0, 2*np.pi, 10)對數組x中的每個元素進行正弦計算,返回一個同樣大小的新數組 y =
17、 np.sin(x) yarray( 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44921271e-16)10.2.2 ufunc運算 先用linspace產生一個從0到2*PI的等距離的10個數,然后將其傳遞給sin函數,由于np.sin是一個ufunc函數,因此它對x中的每個元素求正弦值,然后將結果返回,并且賦值給y。計算之后x中的值
18、并沒有改變,而是新創建了一個數組保存結果。如果希望將sin函數所計算的結果直接覆蓋到數組x上去的話,可以將要被覆蓋的數組作為第二個參數傳遞給ufunc函數。例如: t = np.sin(x,x) xarray( 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44921271e-16) id(t) = id(x) # True10.2.3 矩陣
19、運算 NumPy和Matlab不一樣,對于多維數組的運算,缺省情況下并不使用矩陣運算,如果希望對數組進行矩陣運算的話,可以調用相應的函數。10.2.3 矩陣運算 matrix對象:numpy庫提供了matrix類,使用matrix類創建的是矩陣對象,它們的加減乘除運算缺省采用矩陣方式計算,因此用法和matlab十分類似。但是由于NumPy中同時存在ndarray和matrix對象,因此用戶很容易將兩者弄混。這有違Python的“顯式優于隱式”的原則,因此并不推薦在較復雜的程序中使用matrix。下面是使用matrix的一個例子: a = np.matrix(1,2,3,5,5,6,7,9,9)
20、 a*a*-1matrix( 1.00000000e+00, 1.66533454e-16, -8.32667268e-17, -2.77555756e-16, 1.00000000e+00, -2.77555756e-17, 1.66533454e-16, 5.55111512e-17, 1.00000000e+00) 因為a是用matrix創建的矩陣對象,因此乘法和冪運算符都變成了矩陣運算,于是上面計算的是矩陣a和其逆矩陣的乘積,結果是一個單位矩陣。10.2.3 矩陣運算 矩陣的乘積可以使用dot函數進行計算。對于二維數組,它計算的是矩陣乘積,對于一維數組,它計算的是其點積或內積(兩一維數
21、組對應元素乘積之和)。當需要將一維數組當作列矢量或者行矢量進行矩陣運算時,推薦先使用reshape函數將一維數組轉換為二維數組: a = array(1, 2, 3) a.reshape(-1,1)array(1, 2, 3) a.reshape(1,-1) # array(1, 2, 3) 除了dot計算乘積之外,NumPy還提供了inner和outer等多種計算乘積的函數。這些函數計算乘積的方式不同,尤其是當對于多維數組的時候,更容易搞混。10.2.3 矩陣運算dot: 對于兩個一維的數組,計算的是這兩個數組對應下標元素的乘積和(數學上稱之為內積);對于二維數組,計算的是兩個數組的矩陣乘積
22、;對于多維數組,它的通用計算公式如下,即結果數組中的每個元素都是: 數組a的最后一維上的所有元素與數組b的倒數第二位上的所有元素的乘積和: dot(a, b)i,j,k,m = sum(ai,j,: * bk,:,m)10.2.3 矩陣運算 下面以兩個3位數組的乘積演示一下dot乘積的計算結果: 首先創建兩個3維數組,這兩個數組的最后兩維滿足矩陣乘積的條件: a = np.arange(12).reshape(2,3,2) b = np.arange(12,24).reshape(2,2,3) c = np.dot(a,b) dot乘積的結果c可以看作是數組a,b的多個子矩陣的乘積: np.a
23、lltrue( c0,:,0,: = np.dot(a0,b0) ) # True np.alltrue( c1,:,0,: = np.dot(a1,b0) ) # True np.alltrue( c0,:,1,: = np.dot(a0,b1) ) # True np.alltrue( c1,:,1,: = np.dot(a1,b1) ) # True10.2.3 矩陣運算 矩陣中更高級的一些運算可以在NumPy的線性代數子庫linalg中找到。例如inv函數計算逆矩陣,solve函數可以求解多元一次方程組。 下面是solve函數的一個例子: a = np.random.rand(10,1
24、0) b = np.random.rand(10) x = np.linalg.solve(a,b) np.sum(np.abs(np.dot(a,x)-b) solve函數有兩個參數a和b。a是一個N*N的二維數組,而b是一個長度為N的一維數組,solve函數找到一個長度為N的一維數組x,使得a和x的矩陣乘積正好等于b,數組x就是多元一次方程組的解。有關線性代數方面的進一步內容這里略。10.2.4 文件存取 NumPy提供了多種文件操作函數方便存取數組內容。文件存取的格式分為兩類:二進制和文本。 而二進制格式的文件又分為NumPy專用的格式化二進制類型和無格式類型。10.2.4 文件存取 使
25、用數組的方法函數tofile可以方便地將數組中數據以二進制的格式寫進文件。tofile輸出的數據沒有格式,因此用numpy.fromfile讀回來的時候需要自己格式化數據: a = np.arange(0,12) a.shape = 3,4 aarray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) a.tofile(a.bin) b = np.fromfile(a.bin, dtype=np.float) # 按照float類型讀入數據 b # 讀入的數據是錯誤的10.2.4 文件存取array( 2.12199579e-314, 6.36598737e-31
26、4, 1.06099790e-313, 1.48539705e-313, 1.90979621e-313, 2.33419537e-313) a.dtype # dtype(int32) # 查看a的dtype b = np.fromfile(a.bin, dtype=32) # 按照int32類型讀入數據 b # 數據是一維的array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) b.shape = 3, 4 # 按照a的shape修改b的shape b # 這次終于正確了array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
27、) 從上面的例子可以看出,需要在讀入的時候設置正確的dtype和shape才能保證數據一致。此外,如果fromfile和tofile函數調用時指定了sep關鍵字參數的話,數組將以文本格式輸入輸出。10.2.4 文件存取 前面所舉的例子都是傳遞的文件名,也可以傳遞已經打開的文件對象,例如對于load和save函數來說,如果使用文件對象的話,可以將多個數組儲存到一個npy文件中: a = np.arange(8) b = np.add.accumulate(a) c = a + b f = file(result.npy, wb) np.save(f, a) # 順序將a,b,c保存進文件對象f
28、np.save(f, b); np.save(f, c) f.close() f = file(result.npy, rb) np.load(f) # 順序從文件對象f中讀取內容array(0, 1, 2, 3, 4, 5, 6, 7) np.load(f) # array( 0, 1, 3, 6, 10, 15, 21, 28) np.load(f) # array( 0, 2, 5, 9, 14, 20, 27, 35)10.3 SciPy基本應用 SciPy函數庫在NumPy庫的基礎上增加了眾多的數學、科學以及工程計算中常用的庫函數。例如線性代數、常微分方程數值求解、信號處理、圖像處理
29、、稀疏矩陣等等。 SciPy的幫助信息請訪問:/。10.3.1 常數與特殊函數1、SciPy常數 SciPy有scipy.constants常數模塊,其中的常數有: from scipy import constants as C C.pi # 3.141592653589793 # 值 C.golden # 1.618033988749895 # 黃金比例 C.c # 299792458.0 # 真空中的光速 C.h # 6.62606957e-34 # 普朗克常數10.3.1 常數與特殊函數2、SciPy特殊函數 scipy.special是特殊函數模塊。special模塊是一個非常完整的
30、函數庫,其中包含了基本數學函數、特殊數學函數以及NumPy中出現的所有函數。常用特殊函數求值: 1)伽瑪函數,gamma函數是階乘函數在實數和復數范圍上的擴展。伽瑪函數值計算: import scipy.special as S S.gamma(0.5) # 1.772458509055159 S.gamma(1+1j) # gamma 函數支持復數 (0.49801566811835629-0.15494982836181106j ) S.gamma(1000) # inf # inf是無窮大10.3.1 常數與特殊函數 2)對數伽瑪函數,S.gammaln(x)計算ln(|gamma(x)
31、|)的值,它使用特殊的算法,直接計算gamma函數的對數值,因此可以表示更大的范圍。S.gammaln(1000) # 5905.2204232091817 3)log1p(x),log1p(x)計算log(1+x)的值,當x非常小時,log1p(x)約等于x。當使用log1p()時,則可以很精確地計算。 S.log1p(1e-20) # 9.9999999999999995e-2110.3.2 SciPy簡單應用1、最小二乘擬合 假設有一組實驗數據(xi, yi),我們知道它們之間的函數關系:y = f(x),通過這些已知信息,需要確定函數中的一些參數項。例如,如果f是一個線型函數f(x)
32、= k*x+b,那么參數k和b就是我們需要確定的值。如果將這些參數用 p 表示的話,那么我們就是要找到一組 p 值使得如下公式中的S函數最小:這種算法被稱之為最小二乘擬合(Least-square fitting) SciPy中的子函數庫optimize已經提供了實現最小二乘擬合算法的函數leastsq。10.3.2 SciPy簡單應用【例10-1】 用leastsq進行數據擬合的示例。import numpy as np, pylab as plfrom scipy.optimize import leastsqdef func(x, p): # 數據擬合所用的函數: A*sin(2*pi*
33、k*x + theta) A, k, theta = p return A*np.sin(2*np.pi*k*x+theta)def residuals(p, y, x): 實驗數據x, y和擬合函數之間的差,p為擬合需要找到的系數 return y - func(x, p)x = np.linspace(0, -2*np.pi, 100)A, k, theta = 10, 0.34, np.pi/6 # 真實數據的函數參數y0 = func(x, A, k, theta) # 真實數據y1 = y0 + 2 * np.random.randn(len(x) # 加入噪聲之后的實驗數據p0 =
34、 7, 0.2, 0 # 第一次猜測的函數擬合參數# 調用leastsq進行數據擬合,residuals為計算誤差的函數# p0為擬合參數的初始值,args為需要擬合的實驗數據plsq = leastsq(residuals, p0, args=(y1, x)print(u真實參數:, A, k, theta)print(u擬合參數, plsq0) # 實驗數據擬合后的參數pl.plot(x, y0, label=u真實數據)pl.plot(x, y1, label=u帶噪聲的實驗數據)pl.plot(x, func(x, plsq0), label=u擬合數據)pl.legend(); pl
35、.show() 這個例子中我們要擬合的函數是一個正弦波函數,它有三個參數 A, k, theta ,分別對應振幅、頻率、相角。假設我們的實驗數據是一組包含噪聲的數據 x, y1,其中y1是在真實數據y0的基礎上加入噪聲的到了。10.3.2 SciPy簡單應用 通過leastsq函數對帶噪聲的實驗數據x, y1進行數據擬合,可以找到x和真實數據y0之間的正弦關系的三個參數: A, k, theta。下面是程序的輸出: 真實參數: 10, 0.34000000000000002, 0.52359877559829882 擬合參數 -9.84152775 0.33829767 -2.68899335
36、10.3.2 SciPy簡單應用2、非線性方程組求解 optimize庫中的fsolve函數可以用來對非線性方程組進行求解。它的基本調用形式:fsolve(func, x0)。func(x)是計算方程組誤差的函數,它的參數x是一個矢量,表示方程組的各個未知數的一組可能解,func返回將x代入方程組之后得到的誤差;x0為未知數矢量的初始值。 如果要對如下方程組進行求解的話: f1(u1,u2,u3) = 0; f2(u1,u2,u3) = 0; f3(u1,u2,u3) = 0 那么func可以如下定義:def func(x): u1,u2,u3 = x return f1(u1,u2,u3),
37、 f2(u1,u2,u3), f3(u1,u2,u3)10.3.2 SciPy簡單應用【例10-2】 非線性方程組求解示例,求解如下方程組的解: 5*x1 + 3 = 0 4*x0*x0 - 2*sin(x1*x2) = 0 x1*x2 - 1.5 = 0程序如下:from scipy.optimize import fsolvefrom math import sin,cosdef f(x): x0 = float(x0); x1 = float(x1); x2 = float(x2) return 5*x1+3, 4*x0*x0 - 2*sin(x1*x2), x1*x2 - 1.5 re
38、sult = fsolve(f, 1,1,1)print(result) # -0.70622057, -0.6, -2.5 print(f(result) # 0.0,-9.126033262418787e-14, 5.329070518200751e-1510.4 Matplotlib基本應用 Matplotlib是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地進行制圖。該包下面有很多對象,比如pylab,pyplot等等,pylab集成了pyplot和numpy兩個模塊,能夠進行快速繪圖。 Pylab和pyplot都能夠通過對象或者屬性對圖像進
39、行操作。Pyplot下也有很多對象,如figure,Axes對象等等,對圖像進行細節處理。 10.4 Matplotlib基本應用 Matplotlib的文檔相當完備,網站上Gallery頁面中有上百幅縮略圖,打開之后都有源程序。因此如果你需要繪制某種類型的圖,只需要在這個頁面中瀏覽/復制/粘貼一下,基本上都能搞定。本節作為matplotlib的入門介紹,將簡單介紹幾個例子,從中理解和學習matplotlib繪圖的一些基本概念 Matplotlib的幫助信息請訪問: /10.4.1 繪制散點圖與曲線圖【例10-3】 調用pyplot.scatter函數畫散點圖。程序如下:import nump
40、y as np, matplotlib.pyplot as pltx = np.arange(0,20,2); y = np.linspace(0,20,10)plt.figure(); plt.scatter(x,y,c=r,marker=*)plt.xlabel(X); plt.ylabel(Y)plt.title($X*Y$)plt.show() # 說明:plt.scatter函數也可以畫不同大小點的散點圖又如:n = 1024; X=np.random.normal(0,1,n); Y=np.random.normal(0,1,n)plt.scatter(X,Y); plt.show
41、() # 繪制的圖如圖10-4所示10.4.1 繪制散點圖與曲線圖【例10-4】 通過plot函數畫多種曲線(如圖10-5)。程序如下:import numpy as np; import matplotlib.pyplot as plta = plt.subplot(1,1,1)x = np.arange(0.,3.,0.1)# 這里b表示blue,g表示green,r表示red,-表示連接線,-表示虛線鏈接a1 = a.plot(x, x, bx-, label = line 1)a2 = a.plot(x, x*2, g-, label = line2)a3 = a.plot(x, x*
42、3, gv-, label = line3)a4 = a.plot(x, 3*x, ro-, label = line4)a5 = a.plot(x, 2*x, r*-, label = line5)a6 = a.plot(x, 2*x+1, ro-, label = line6)plt.title(My matplotlib learning) #標記圖的題目、x和y軸plt.xlabel(X); plt.ylabel(Y)handles, labels = a.get_legend_handles_labels() #顯示圖例a.legend(handles:-1, labels:-1)p
43、lt.show()10.4.2 繪制正弦余弦曲線【例10-5】 用matplotlib繪制的正弦余弦曲線(如圖10-6)。程序如下:import numpy as np, matplotlib, matplotlib.pyplot as pltX = np.linspace(-np.pi,+np.pi,256); Y = np.sin(X); Y2= np.cos(X)fig = plt.figure(figsize=(8,6), dpi=72,facecolor=white)axes = plt.subplot(111)axes.plot(X,Y, color = blue, linewid
44、th=2, linestyle=-)axes.set_xlim(X.min(),X.max()axes.set_ylim(1.01*Y.min(),1.01*Y.max()axes.plot(X,Y2, color = red, linewidth=2, linestyle=-)axes.set_xlim(X.min(),X.max()axes.set_ylim(1.01*Y2.min(),1.01*Y2.max()axes.spinesright.set_color(none)axes.spinestop.set_color(none)10.4.2 繪制正弦余弦曲線axes.xaxis.se
45、t_ticks_position(bottom)axes.spinesbottom.set_position(data,0)axes.yaxis.set_ticks_position(left)axes.spinesleft.set_position(data,0)plt.show()10.5 數據分析模塊pandas pandas 是一個開源的軟件,它具有 BSD 的開源許可,為 Python 編程語言提供高性能,易用數據結構和數據分析工具。在數據改動和數據預處理方面,Python 早已名聲顯赫,但是在數據分析與建模方面,Python 是個短板。pandas 軟件就填補了這個空白,能讓你用
46、Python 方便地進行數據的處理,而不用轉而選擇更主流的專業語言,例如R語言。 pandas的幫助信息請訪問: /10.5 數據分析模塊pandas1、pandas的數據結構 在pandas中有兩類非常重要的數據結構,即序列Series和數據框DataFrame。 Series類似于numpy中的一維數組,除了通用一維數組可用的函數或方法,而且其可通過索引標簽的方式獲取數據,還具有索引的自動對齊功能;DataFrame類似于numpy中的二維數組,同樣可以通用numpy數組的函數和方法,而且還具有其他靈活應用。10.5 數據分析模塊pandas(1)Series的創建 序列的創建主要有三種方
47、式:1)通過一維數組創建序列import numpy as np, pandas as pdarr1 = np.arange(10)arr1 # type(arr1)s1 = pd.Series(arr1)s1 # type(s1)2)通過字典的方式創建序列dic1 = a:10,b:20,c:30,d:40,e:50dic1 # type(dic1)s2 = pd.Series(dic1)s2 # type(s2) 3)通過DataFrame中的某一行或某一列創建序列10.5 數據分析模塊pandas(2)DataFrame的創建數據框的創建主要有三種方式:1)通過二維數組創建數據框arr2 = np.array(np.arange(12).reshape(4,3)arr2 # type(arr2)df1 = pd.DataFrame(arr2)df1 # type(df1)10.5 數據分析模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 故事代替道理:《勇敢說出你的答案》
- 2025年變頻與逆變電源裝置合作協議書
- 2025商場超市消防改造合同
- 2025年稀土農用材料項目建議書
- 2025買賣合同與承攬合同之區別及地域管轄的判定
- 2025調整勞動合同告知書
- 2025建筑工程設計合同格式范本
- 年度財務健康檢查和改善措施計劃
- 2025年電力系統安裝服務項目合作計劃書
- 增強班級活動吸引力的方案計劃
- 重度哮喘診斷與處理中國專家共識(2024版)解讀
- 《心系國防 強國有我》 課件-2024-2025學年高一上學期開學第一課國防教育主題班會
- 中廣核線上測評題庫
- 油氣開發全過程(勘探+鉆井+壓裂+集輸)
- 聯合偉世:2024年中國人工智能人才發展報告
- 事業單位離崗創業規定2024年
- 山東省濟南市中區2024屆六年級下學期小升初數學試卷含解析
- JT-T-1178.2-2019營運貨車安全技術條件第2部分:牽引車輛與掛車
- 2024瀘州職業技術學院教師招聘考試筆試試題
- DB51T 3178-2024四川省多災種自然災害預警信息發布技術規范
- 一年級數學口算題專項練習(800道)-100以內加減法
評論
0/150
提交評論