python?numpy庫(kù)之如何使用matpotlib庫(kù)繪圖
一.Numpy庫(kù)
1.什么是numpy?
numpy是python進(jìn)行科學(xué)計(jì)算的一個(gè)基礎(chǔ)軟件包,他是一個(gè)python庫(kù),提供多維數(shù)組對(duì)象,各種派生對(duì)象(如掩碼數(shù)組和矩陣),以及用于數(shù)組快速操作的各種API,包括數(shù)學(xué),邏輯,形狀操作,排序,選擇,輸入輸出,離散傅里葉變化,基本線性代數(shù),基本統(tǒng)計(jì)運(yùn)算和隨機(jī)模擬等。
2.Numpy數(shù)組和原生Python array數(shù)組之間的區(qū)別
1.Numpy數(shù)組在創(chuàng)建時(shí)具有固定的大小,與python的原生數(shù)組對(duì)象可以動(dòng)態(tài)增長(zhǎng)不同,更改其大小將會(huì)創(chuàng)建一個(gè)新的數(shù)組并刪除原來(lái)的數(shù)組。
2.Numpy數(shù)組中的元素都需要具有相同的數(shù)據(jù)類型,因此在內(nèi)存中的大小相同。
3.Numpy數(shù)組有助于對(duì)大量數(shù)據(jù)進(jìn)行高級(jí)教學(xué)和其他類型的操作,執(zhí)行效率高
3.Numpy數(shù)組
假如我們現(xiàn)在有兩個(gè)數(shù)組,我們要將兩個(gè)數(shù)組對(duì)應(yīng)位置的值相乘,在c語(yǔ)言中我們需要用到循環(huán)來(lái)解決,而使用numpy數(shù)組那我們可以直接將兩個(gè)數(shù)組進(jìn)行乘法運(yùn)算,只需要一行代碼即可。
軸:
Numpy的主要對(duì)象是同構(gòu)多維數(shù)組,它是一個(gè)元素表,所有類型都相同,由非負(fù)整數(shù)元組索引,在Numpy維度中稱為軸。
比如:
數(shù)組【1,2,1】:有一個(gè)軸,該軸有三個(gè)元素1,2,1,軸長(zhǎng)為3,這里一軸表示一維數(shù)組
數(shù)組【【1,0,0】,【0,1,2】】:有兩個(gè)軸,一軸長(zhǎng)度為2,二軸長(zhǎng)度為3,這里表示二維數(shù)組。
ndarray對(duì)象屬性如下:
1.ndarray.ndim-數(shù)組的軸(維度)的個(gè)數(shù)
2.ndarray.shape--數(shù)組的維度,若有n行,m列則輸出為(n,m)
3.ndarray.size--數(shù)組元素的總數(shù)
4.ndarray.dtype--一個(gè)描述數(shù)組中元素類型的對(duì)象,可以使用標(biāo)準(zhǔn)的python類型創(chuàng)建或指定dtype.
5.ndarray.itemsize--數(shù)組中每個(gè)元素的字節(jié)大小
6.reshape
來(lái)看一段代碼了解把:
import numpy as np # 同構(gòu)生成numpy的一維數(shù)組 a = np.arange(1, 10, 2) print(a) # shape打印numpy數(shù)組的形狀 print(a.shape) # ndim打印numpy數(shù)組的軸數(shù) print(a.ndim) # numpy數(shù)組元素的訪問(wèn),數(shù)組名【下標(biāo)】 print(a[0])
(1).array方法,將一個(gè)列表所有元素同構(gòu)成一個(gè)數(shù)組
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] a = np.array(list1) print(a) print(a.shape)
(2)array方法,將一個(gè)列表所有元素同構(gòu)成一個(gè)二維數(shù)組
list2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = np.array(list2) print(b.shape)
(3) reshape():改變數(shù)組的維度等形狀
a = np.arange(1, 21, 1).reshape(4, 5) print(a) print(a.shape)
還有許多其他的屬性,接下來(lái)我貼一張圖來(lái)總結(jié)展示就不過(guò)多贅述了:
4.numpy數(shù)組的運(yùn)算
numpy的運(yùn)算我用下面一段代碼來(lái)進(jìn)行總結(jié),注意沒有除法運(yùn)算
import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) # 乘法運(yùn)算,將二維數(shù)組(矩陣)對(duì)應(yīng)元素相乘 c = a * b print(c) # 加法運(yùn)算,將二維數(shù)組(矩陣)對(duì)應(yīng)元素相加 c = a + b print(c) # 減法運(yùn)算 c = a - b print(c) print(a.sum()) print(a.max()) print(a.min()) print(a) # sum(axis=1):將矩陣中各行的所有元素相加作為新元素 print(a.sum(axis=1)) # sum(axis=1):將矩陣中各列元素相加作為新元素 print(a.sum(axis=0))
5.numpy的索引,切片
numpy每個(gè)軸都會(huì)有自己的索引
1.元素訪問(wèn)【第一軸索引,第二軸索引,......】
2.元素的切片 【start: stop: step, start:stop:step,.....】
左閉右開 eg: b[1: 3, 2: 4]
import numpy as np a = np.arange(10) print(a.shape) print(a) print(a[0], a[-1], a[a.size-1]) # -1表示最后1位 print(a[1: 5]) # 1-5,步長(zhǎng)為1 左閉右開 print(a[1:: 2]) # 1-末尾 ,步長(zhǎng)為2,左閉右開
二維數(shù)組切片:
b = np.arange(20).reshape(4, 5) print(b) print(b.shape) print(b[1][1], b[1][1: -1]) print(b[1, 1], b[1, 1: -1]) print(b[1: 3, 2: 4])
三維數(shù)組的切片:
c = np.arange(24).reshape(4, 3, 2) print(c) print(c[0: 2, 0: 2, 0: 1])
二.matplotlib
matplotlib是python2D繪圖領(lǐng)域使用最廣泛的套件,它能讓使用者很輕松將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式,在繪圖結(jié)構(gòu)中,figure創(chuàng)建窗口,subplot創(chuàng)建子圖,所有的繪圖只能在子圖上進(jìn)行,plt表示當(dāng)前子圖,若沒有就創(chuàng)建一個(gè)子圖。
1.繪制直線
我們只需要將兩點(diǎn)的x,y坐標(biāo)進(jìn)行同構(gòu)成為兩個(gè)一維數(shù)組,通過(guò)plot方法就可以實(shí)現(xiàn),也可以改變參數(shù)來(lái)修改直線的顏色
import numpy as np import matplotlib.pyplot as plt """ 1.繪制直線,直線兩點(diǎn)為(2, 1) (8, 9) """ x = np.array([2, 8]) # 將兩點(diǎn)的x軸坐標(biāo),同構(gòu)成一個(gè)一維數(shù)組 y = np.array([1, 9]) # 將兩點(diǎn)的y軸坐標(biāo),同構(gòu)成一個(gè)一維數(shù)組 # 繪制直線 plt.plot(x, y) # plt.plot(x, y, scalex=5, scaley=3) # 顯示窗口 plt.show()
2.繪制曲線
使用arange方法生成0-4Π之間的x坐標(biāo),均勻分布步長(zhǎng)為0.1,y左邊則按正弦函數(shù)進(jìn)行分布
import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 4 * np.pi, 0.1) # 0-4Π之間,均勻分配,步長(zhǎng)0.1 y = np.sin(x) # 呈正弦變化 plt.plot(x, y) plt.show()
3.散點(diǎn)圖繪制
散點(diǎn)圖繪制,主要在繪制坐標(biāo)點(diǎn)的基礎(chǔ)上,通過(guò)控制坐標(biāo)點(diǎn)的分布來(lái)控制散點(diǎn)圖的分布情況
import numpy as np import matplotlib.pyplot as plt """ 2.繪制坐標(biāo)點(diǎn) """ x = np.array([6]) y = np.array([6]) # scatter:繪制點(diǎn),第1,2參數(shù)為坐標(biāo),s表示面積,c表示顏色,marker表示形狀 plt.scatter(x, y, s=100, c='b', marker="*") plt.show() """ 3.繪制散點(diǎn)圖,呈現(xiàn)正態(tài)分布 """ # np.random:產(chǎn)生隨機(jī)數(shù) # normal(0, 3, 500):在0-3之間產(chǎn)生500個(gè)正態(tài)分布的隨機(jī)數(shù) x = np.random.normal(0, 3, 1000) y = np.random.normal(0, 3, 1000) # 將這1000個(gè)點(diǎn)中前500個(gè)畫成紅色圓形,后500個(gè)畫成藍(lán)色星型 plt.scatter(x[0: 500], y[0: 500], c='r', marker="o") plt.scatter(x[500: 1000], y[500: 1000], c='b', marker="*") plt.show()
4.多界面繪制
import numpy as np import matplotlib.pyplot as plt """ 4.多界面繪制,其實(shí)就是在一figure窗口使用多個(gè)子圖 """ x = np.array([1, 3, 6, 9]) y = np.array([2, 3, 8, 7]) # 指定繪制的子圖的位置 # 221表示二行2列, 共四個(gè)子圖的第1幅圖 # 222表示二行2列,共四個(gè)子圖的的第2幅圖 # 223表示二行2列,共四個(gè)子圖的的第3幅圖 # 224表示二行2列,共四個(gè)子圖的的第4幅圖 plt.subplot(221) plt.plot(x, y, c='r') plt.subplot(222) plt.plot(x, y, c='b') plt.subplot(223) plt.plot(x, y, c='g') plt.subplot(224) plt.plot(x, y, c='y') plt.show()
5.柱形圖繪制
6.3D圖形繪制
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D """ 繪制3d圖 """ # 創(chuàng)建窗口 fig = plt.figure() # 在該窗口中創(chuàng)建3d繪圖對(duì)象 ax = Axes3D(fig) # 創(chuàng)建點(diǎn)的x和y坐標(biāo)數(shù)組 x = np.arange(-3, 3, 0.2) y = np.arange(-3, 3, 0.2) # 網(wǎng)格化處理 x, y = np.meshgrid(x, y) # 計(jì)算某個(gè)點(diǎn)到 原點(diǎn)的距離為半徑 r = np.sqrt(x**2 + y**2) # 以半徑為基準(zhǔn),求它的正弦值為點(diǎn)的z軸坐標(biāo) z = np.sin(r) # 繪制圖像 ax.plot_surface(x, y, z, rstride=3, cstride=1, cmap="hot") plt.show()
到此這篇關(guān)于python numpy庫(kù) 使用matpotlib庫(kù)繪圖的文章就介紹到這了,更多相關(guān)python numpy庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度
ctypes是Python的一個(gè)外部庫(kù),提供和C語(yǔ)言兼容的數(shù)據(jù)類型,可以很方便地調(diào)用C DLL中的函數(shù)。今天我們就來(lái)詳細(xì)探討下ctypes庫(kù)的使用技巧2016-09-09Python list與NumPy array 區(qū)分詳解
這篇文章主要介紹了Python list與NumPy array 區(qū)分詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11pandas 把數(shù)據(jù)寫入txt文件每行固定寫入一定數(shù)量的值方法
今天小編就為大家分享一篇pandas 把數(shù)據(jù)寫入txt文件每行固定寫入一定數(shù)量的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python腳本生成caffe train_list.txt的方法
下面小編就為大家分享一篇python腳本生成caffe train_list.txt的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python基于gevent實(shí)現(xiàn)并發(fā)下載器代碼實(shí)例
這篇文章主要介紹了python基于gevent實(shí)現(xiàn)并發(fā)下載器代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11用python實(shí)現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了用python實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07Python實(shí)現(xiàn)修改IE注冊(cè)表功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)修改IE注冊(cè)表功能,結(jié)合完整實(shí)例形式分析了Python操作IE注冊(cè)表項(xiàng)的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05