久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python進(jìn)階之NumPy快速入門:你可能再也找不到這樣簡(jiǎn)單的教程了

 excel05 2019-11-08

NumPy是Python的一個(gè)擴(kuò)展庫(kù),負(fù)責(zé)數(shù)組和矩陣運(yùn)行,。相較于傳統(tǒng)Python,,NumPy運(yùn)行效率高,,速度快,,是利用Python處理數(shù)據(jù)必不可少的工具,。

這個(gè)NumPy快速入門系列分為四篇,,包含了NumPy大部分基礎(chǔ)知識(shí),,每篇閱讀時(shí)間不長(zhǎng),但內(nèi)容含量高,。大家最好親自碼一遍代碼,,這樣可以更有收獲。

概要

輕松認(rèn)識(shí)和安裝NumPy,,對(duì)NumPy建立一個(gè)良好印象,。

掌握NumPy的各種屬性,讓使用數(shù)組變得得心應(yīng)手,。

學(xué)會(huì)三種創(chuàng)建數(shù)組方法,,讓創(chuàng)建數(shù)組變得輕而易舉。

NumPy安裝和介紹

NumPy安裝

我們提供兩種命令安裝方法,,都非常簡(jiǎn)便:

  • pip命令安裝

  • conda命令安裝

這兩種安裝方法適用于Windows, Linux,以及Mac系統(tǒng),。

(1)pip命令:pip install numpy

Python進(jìn)階之NumPy快速入門:你可能再也找不到這樣簡(jiǎn)單的教程了

當(dāng)終端顯示成功安裝或者已經(jīng)安裝說(shuō)明numpy已經(jīng)安裝完畢。

(2)conda命令:conda install numpy

conda命令是通過(guò)Anaconda軟件來(lái)安裝NumPy,。安裝好Anaconda軟件后,,打開(kāi)Anaconda Prompt后在里面輸入conda install numpy命令即可。

Python進(jìn)階之NumPy快速入門:你可能再也找不到這樣簡(jiǎn)單的教程了

Python進(jìn)階之NumPy快速入門:你可能再也找不到這樣簡(jiǎn)單的教程了

安裝完成后,,為了檢驗(yàn)NumPy是否可以使用,,我們用一個(gè)簡(jiǎn)單的例子做個(gè)實(shí)驗(yàn):

代碼:

import numpy as npprint (np.eye(4))

講解:

為了方便,大家一般采用import numpy as np這種調(diào)用方法,,將numpy縮寫成np來(lái)使用,。我們使用NumPy中的eye()函數(shù)來(lái)檢查NumPy是否已經(jīng)安裝完成,eye(N)是一個(gè)產(chǎn)生N*N的單位矩陣

運(yùn)行結(jié)果:

[[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]]

如果大家的屏幕里面也出現(xiàn)了這個(gè)結(jié)果,,那么恭喜你NumPy庫(kù)已經(jīng)成功安裝,,可以開(kāi)始正式學(xué)習(xí)了。

NumPy和列表

我們首先要搞清楚的是,,NumPy處理的對(duì)象是什么,。事實(shí)上,我們把NumPy處理的對(duì)象叫ndarray,這是一個(gè)縮寫,,翻譯過(guò)來(lái)叫做多維數(shù)組,。ndarray類型的數(shù)據(jù)和我們之前學(xué)過(guò)的列表頗有淵源:

代碼:

import numpy as nplist = [1, 2, 3]arr = np.array(list)print (type(list))print (type(arr))

講解:

我們首先建立一個(gè)列表,然后通過(guò)np.array函數(shù)將這個(gè)列表轉(zhuǎn)換成一個(gè)NumPy數(shù)組,,通過(guò)打印這兩個(gè)變量的type信息,,我們可以發(fā)現(xiàn)二者的區(qū)別和聯(lián)系。

運(yùn)行結(jié)果:

<class 'list'><class 'numpy.ndarray'>

沒(méi)錯(cuò),,arr變量的數(shù)據(jù)類型是ndarray,。當(dāng)然,我們并不是總是通過(guò)轉(zhuǎn)換列表變成ndarray,。我們想強(qiáng)調(diào)的是,,雖然NumPy數(shù)組雖然和列表很類似,但是二者卻是完全不同的數(shù)據(jù)類型,,因此二者使用方法也有很大不同,。

Numpy比Python列表更具優(yōu)勢(shì),其中一個(gè)優(yōu)勢(shì)便是速度,。在對(duì)大型數(shù)組執(zhí)行操作時(shí),,Numpy的速度比Python列表的速度快了好幾百。因?yàn)镹umpy數(shù)組本身能節(jié)省內(nèi)存,,并且Numpy在執(zhí)行算術(shù),、統(tǒng)計(jì)和線性代數(shù)運(yùn)算時(shí)采用了優(yōu)化算法

常見(jiàn)數(shù)組

我們最后給大家介紹常見(jiàn)的幾種ndarray數(shù)組:

代碼:

a = np.array([1, 2, 3])b = np.array([[1, 2], [3, 4]])c = np.array([1, 2, 3], dtype = complex)print (a)print (b)print (c)

講解:

a是一個(gè)一維數(shù)組,;b是一個(gè)二維數(shù)組,;c是復(fù)數(shù)變量的一維數(shù)組。這些都是常見(jiàn)的ndarray,,以后我們將會(huì)用NumPy提供的函數(shù)對(duì)這些常見(jiàn)的數(shù)組進(jìn)行處理,,來(lái)完成我們想要的目標(biāo)。

運(yùn)行結(jié)果:

[1 2 3][[1 2] [3 4]][1.+0.j 2.+0.j 3.+0.j]

NumPy數(shù)組屬性

我們將幾種常見(jiàn)數(shù)組屬性分成以下幾種:

  • 數(shù)據(jù)類型 dtype

  • 元素個(gè)數(shù) size

  • 維度 ndim

  • 形狀 shape

  • 實(shí)部和虛部 real image

NumPy支持很多不同的數(shù)據(jù)類型,,從整數(shù)型(int)到浮點(diǎn)型(float),,再到復(fù)數(shù)型,應(yīng)有盡有,。如何判斷數(shù)組的數(shù)據(jù)類型是一件比較重要的事情,,NumPy給我們提供了dtype命令來(lái)查看數(shù)據(jù)類型:

代碼:

import numpy as npa = np.array([1, 2, 3])b = np.array([[1.1, 2], [3.1, 4.2]])c = np.array([1, 2, 3], dtype = complex)print (a.dtype, b.dtype, c.dtype)

講解:

我們分別建立了三個(gè)NumPy數(shù)組,a是整數(shù)型,;b是浮點(diǎn)型,;c是復(fù)數(shù)型。dtype既可以在創(chuàng)建數(shù)組的時(shí)候申明變量類型,,也可以通過(guò)打印告訴我們數(shù)組的數(shù)據(jù)類型,。

運(yùn)行結(jié)果:

int32 float64 complex128

在我們知道了NumPy數(shù)據(jù)類型后,,我們還需要知道它的更多屬性來(lái)全面了解這個(gè)數(shù)組。

代碼:

b = np.array([[1.1, 2], [3.1, 4.2]])c = np.array([1, 2, 3], dtype = complex)print (b.ndim, b.shape, b.size)print (c.real, c.imag)

講解:

我們分別查看了b數(shù)組的維度,,形狀,,以及元素個(gè)數(shù)。我們知道b是一個(gè)2*2的浮點(diǎn)型數(shù)組,,因?yàn)樗木S度是2,形狀就是行數(shù)乘以列數(shù)(2,2),;元素個(gè)數(shù)是4。對(duì)于c這個(gè)復(fù)數(shù)數(shù)組,,我們調(diào)用了實(shí)部(real)和虛部(imag)這個(gè)兩個(gè)屬性。

運(yùn)行結(jié)果:

2 (2, 2) 4[1. 2. 3.] [0. 0. 0.]

創(chuàng)建數(shù)組

對(duì)于NumPy數(shù)組,,一般而言我們有三種創(chuàng)建方法:

  1. 用np.array直接填入已知數(shù)據(jù),,比如我們?cè)诘谝恍」?jié)介紹常見(jiàn)數(shù)組的時(shí)候用的方法。

  2. 用特殊函數(shù)創(chuàng)建符合一定規(guī)律的數(shù)組,。比如numpy.zeros:創(chuàng)建元素全是0的數(shù)組,。

  3. 用asarray將其他類型數(shù)據(jù)轉(zhuǎn)換成NumPy數(shù)組。

我們先介紹第二種方法中常見(jiàn)的幾種函數(shù):

  • numpy.zeros 創(chuàng)建元素全是0的數(shù)組

  • numpy.ones 創(chuàng)建元素全是1的數(shù)組

  • numpy.arrange 創(chuàng)建數(shù)值范圍

  • numpy.linspace 創(chuàng)建數(shù)值范圍

np.zeros() & np.ones()

代碼:

e = np.array([1, 2, 3], dtype=float)f = np.zeros((3,2),dtype=int)g = np.ones((1,3))print (e)print (f)print (g)

講解:

我們用第一種方法,,創(chuàng)建了數(shù)據(jù)類型為浮點(diǎn)型(float)的數(shù)組e;然后通過(guò)第二種方法,,分別創(chuàng)建了元素都是0和1的兩個(gè)數(shù)組。注意到我們可以通過(guò)dtype,,以及shape等來(lái)控制數(shù)組屬性,。在上面的例子中f和g,我們把shape省略了,只用(3,2)這種形式,。

運(yùn)行結(jié)果:

[1. 2. 3.][[0 0] [0 0] [0 0]][[1. 1. 1.]]

np.arrange()

很多情況下我們非常想要得到從一個(gè)整數(shù)到另一個(gè)整數(shù)的一個(gè)數(shù)組,,比如周一到周日,一天中從1點(diǎn)到24點(diǎn)等,,還有從-10度到40度的溫度范圍,。這時(shí)候用NumPy中的arange函數(shù)就可以幫助你達(dá)成這個(gè)目標(biāo)。

arange函數(shù)有四個(gè)輸入?yún)?shù)來(lái)調(diào)整:

  • start 起始值

  • stop 終止值

  • step 步長(zhǎng)(默認(rèn)是1)

  • dtype 數(shù)據(jù)類型,。

值得注意的是,,這里的終止值是取不到的,所以真正意義上而言終止值是stop-1,。

代碼:

import numpy as npa = np.arange(5)b = np.arange(1,5)c = np.arange(1,10,2)d = np.arange(2,6,dtype=float)print (a, b, c, d)

講解:

我們一共建立了四個(gè)數(shù)組,,第一個(gè)我們只有一個(gè)參數(shù),是終止值參數(shù),,這時(shí)候其他參數(shù)都是默認(rèn)的,。第二個(gè)數(shù)組,我們給定了起始值和終止值,。第三個(gè)數(shù)組我們?cè)黾恿瞬介L(zhǎng),。第四個(gè)數(shù)組,我們隱藏的其實(shí)是步長(zhǎng),也就是取默認(rèn)值1,。大家在看答案之前可以猜一下a,b,c,d分別是多少,。

運(yùn)行結(jié)果:

[0 1 2 3 4] [1 2 3 4] [1 3 5 7 9] [2. 3. 4. 5.]

np.linspace()

linspace是linear space的縮寫,線性空間,。和arange稍有不同的是,,linspace沒(méi)有步長(zhǎng),相反它有個(gè)叫做num的參數(shù)來(lái)控制生成數(shù)列的總數(shù)目,。也就是說(shuō),,在給定起始值和終止值的時(shí)候,步長(zhǎng)被總數(shù)目決定了,。

代碼:

a = np.linspace(1,10,10)b = np.linspace(10,20,5, endpoint = False)c = np.linspace(10,20,5, endpoint = False, retstep = True)print (a)print (b)print (c)

講解:

我們分別利用linspace建立了三個(gè)數(shù)組,,第一個(gè)endpoint不賦值,默認(rèn)是True,,默認(rèn)終止值是包含在內(nèi)的,;第二個(gè)我們不把終止值包括在內(nèi);最后我們用retstep=True顯示數(shù)列的間距,。

運(yùn)行結(jié)果:

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.][10. 12. 14. 16. 18.](array([10., 12., 14., 16., 18.]), 2.0)

第三種創(chuàng)建方法:asarray() & array()

asarray函數(shù)可以將其他數(shù)據(jù)類型轉(zhuǎn)換成Numpy數(shù)組,。

代碼:

a = [1, 2, 3]b = (1, 2, 3)a_1 = np.array(a)a_2 = np.asarray(a)b_1 = np.array(b)b_2 = np.asarray(b)print (a_1, a_2,type(a_1))print (b_1, b_2)

講解:

我們建立了一個(gè)列表a和一個(gè)元組b,分別用np.array和np.asarray來(lái)轉(zhuǎn)換,。其實(shí)在將列表和元組轉(zhuǎn)換成numpy數(shù)組的時(shí)候效果是一樣的,。也就是說(shuō)不論是從列表a出發(fā)得到的a_1和a_2還是從元組b出發(fā)得到的b_1和b_2都是numpy數(shù)組[1,2,3]。

但是,,他們二者還是有區(qū)別的,,當(dāng)數(shù)據(jù)源是ndarray,即numpy數(shù)組的時(shí)候,array會(huì)復(fù)制出一個(gè)副本,,占用新的內(nèi)存,,但是asarray并不會(huì)。從這里看來(lái),,對(duì)一般的程序任務(wù),,我們并不太需要區(qū)分array和asarray,除非做大型數(shù)據(jù)的時(shí)候

運(yùn)行結(jié)果:

[1 2 3] [1 2 3][1 2 3] [1 2 3]

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多