淺談Python中range與Numpy中arange的比較
本文先比較range與arange的異同點(diǎn),再詳細(xì)介紹各自的用法,然后列舉了幾個(gè)簡(jiǎn)單的示例,最后對(duì)xrange進(jìn)行了簡(jiǎn)單的說(shuō)明。
1. range與arange的比較
(1)相同點(diǎn):A、參數(shù)的可選性、默認(rèn)缺省值是一樣的;B、結(jié)果均包括開(kāi)始值,不包括結(jié)束值; C、arange的參數(shù)為整數(shù)是,與range函數(shù)等價(jià);D、都具備索引查找、要素截取等操作。
(2)不同點(diǎn):A、range函數(shù)的參數(shù)只能為整數(shù),arange的參數(shù)為數(shù)值型,包括整數(shù)和浮點(diǎn)數(shù); B、輸出的數(shù)據(jù)類型不同,range的輸出為列表(list),arange的結(jié)果為數(shù)組(ndarray);C、range的最后一個(gè)元素,不會(huì)超過(guò)stop,而arange的最后一個(gè)元素可能會(huì)比stop的值大。
2. python中的范圍range
(1)官方文檔對(duì)range的定義為:The range type represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops.(range代表不可變的數(shù)字序列,通常用于一定次數(shù)的循環(huán)中)。
若步長(zhǎng)為正數(shù),范圍r的值由公式r[i] = start + step*i確定,限制條件為i >=0、r[i] < stop;
若步長(zhǎng)為負(fù)數(shù),范圍r的值同樣由公式r[i] = start + step*i確定,但限制條件為i >=0、r[i] > stop;
(2)參數(shù)說(shuō)明
range(start, stop[, step])
start:序列的開(kāi)始值,如果缺省默認(rèn)為0;
stop:序列的結(jié)束值;
step:序列的步長(zhǎng),缺省的默認(rèn)值為1。
range中所有的參數(shù)必須為整數(shù),必須為整數(shù)!
(3)range的其他說(shuō)明
A、range相比常規(guī)list或tuple的優(yōu)勢(shì)在于,不管range代表的范圍有多大,它實(shí)際上只存儲(chǔ)范圍的開(kāi)始、結(jié)束和步長(zhǎng)值,它占用相同且很小的內(nèi)存空間;
B、range繼承于collections.abc.Sequence,提供諸如包含內(nèi)容是否相等的比較、索引查找、要素截取、支持負(fù)數(shù)索引等。
3. Numpy中的arange
(1)官方文檔中的定義:Return evenly spaced values within a given interval.(返回給定間距內(nèi)返回均勻間隔的值)
Values are generated within the half-open interval [start, stop) (in other words, the interval including start but excluding stop). For integer arguments the function is equivalent to the Python built-in range function, but returns an ndarray rather than a list.(值的范圍在半開(kāi)放的間隔[start, dtop)內(nèi),也就是包括start起始值,不包括stop結(jié)束值;若參數(shù)均為整數(shù),與python中的range函數(shù)等價(jià),但是它返回的是數(shù)組而非列表)When using a non-integer step, such as 0.1, the results will often not be consistent. It is better to use linspace for these cases.(當(dāng)使用非整數(shù)步長(zhǎng)時(shí),比如0.1,結(jié)果經(jīng)常不是一致的,在這種情況下,最好使用線性等分向量)。
(2)參數(shù)說(shuō)明
numpy.range([start,] stop, [step,] dtype=None)
start:數(shù)字型,可選參數(shù),間隔的開(kāi)始值,間隔包括開(kāi)始值,缺省時(shí)的默認(rèn)值是0;
stop:數(shù)字型,必填參數(shù),間隔的結(jié)束值,間隔不包括結(jié)束值,除非一些特殊情況,比如步長(zhǎng)不是整數(shù),浮點(diǎn)數(shù)的四舍五入影響到輸出的長(zhǎng)度;
step:數(shù)組型,可選參數(shù),間距值,對(duì)任何輸出,它是相鄰兩個(gè)值之間的差值,out[i+1] - out[i],缺省的默認(rèn)值為1,如果指定間距值,開(kāi)始值也必須指定。
dtype:輸出數(shù)組的類型,如果沒(méi)有指定,從輸入?yún)?shù)的類型推斷輸出結(jié)果的數(shù)據(jù)類型(即與輸入?yún)?shù)的類型保持一致)。
返回值:等間距的數(shù)組,對(duì)浮點(diǎn)型參數(shù),結(jié)果的長(zhǎng)度為 ceil((stop-start)/step),因浮點(diǎn)溢出,這可能導(dǎo)致最后一個(gè)元素大于結(jié)束值。
4、簡(jiǎn)單的示例
In [4]: import numpy as np In [5]: r = range(5) In [6]: ar = np.arange(5) In [7]: r Out[7]: range(0, 5) In [8]: ar Out[8]: array([0, 1, 2, 3, 4]) In [9]: r2 = list(range(1, 19, 2)) In [10]: r2 Out[10]: [1, 3, 5, 7, 9, 11, 13, 15, 17]
In [11]: ar3 = np.arange(1, 9.0, 0.7) In [12]: ar3 Out[12]: array([ 1. , 1.7, 2.4, 3.1, 3.8, 4.5, 5.2, 5.9, 6.6, 7.3, 8. , 8.7]) In [13]: ar3.dtype Out[13]: dtype('float64') In [14]: ar3[3: 8] Out[14]: array([ 3.1, 3.8, 4.5, 5.2, 5.9])
5、python 2.x版本中xrange的說(shuō)明
在python2.x版本中,對(duì)于非常長(zhǎng)的范圍,建議使用xrange,其參數(shù)與range一樣,但不會(huì)預(yù)先產(chǎn)生所有的值,而是返回一個(gè)用于逐個(gè)產(chǎn)生整數(shù)的迭代器。在python3 中,range始終返回迭代器,因而沒(méi)必要再使用xrange這個(gè)函數(shù)了。
以上這篇淺談Python中range與Numpy中arange的比較就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
分享Python開(kāi)發(fā)中要注意的十個(gè)小貼士
不管是python開(kāi)發(fā)還是其他什么語(yǔ)言的開(kāi)發(fā),如果在開(kāi)發(fā)中我們能掌握一些有用的貼士和技巧,那么肯定會(huì)大大提高我們的開(kāi)發(fā)效率,今天小編和大家分享的就是python開(kāi)發(fā)中,一些初學(xué)這門語(yǔ)言常常會(huì)犯的錯(cuò)誤,一起來(lái)看看吧。2016-08-08Python驗(yàn)證碼截取識(shí)別代碼實(shí)例
這篇文章主要介紹了Python驗(yàn)證碼截取識(shí)別代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05python實(shí)現(xiàn)連連看輔助(圖像識(shí)別)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)連連看輔助程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07python實(shí)戰(zhàn)之實(shí)現(xiàn)excel讀取、統(tǒng)計(jì)、寫入的示例講解
下面小編就為大家分享一篇python實(shí)戰(zhàn)之實(shí)現(xiàn)excel讀取、統(tǒng)計(jì)、寫入的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05PyCharm 2020.2下配置Anaconda環(huán)境的方法步驟
這篇文章主要介紹了PyCharm 2020.2下配置Anaconda環(huán)境的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python自動(dòng)計(jì)算圖像數(shù)據(jù)集的RGB均值
這篇文章主要為大家詳細(xì)介紹了python自動(dòng)計(jì)算圖像數(shù)據(jù)集的RGB均值,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06使用Flask創(chuàng)建簡(jiǎn)單的圖片上傳站點(diǎn)的流程步驟
在網(wǎng)絡(luò)應(yīng)用程序中,實(shí)現(xiàn)圖片上傳功能是一項(xiàng)常見(jiàn)的需求,Flask框架提供了簡(jiǎn)單而靈活的工具,使得構(gòu)建這樣的功能變得相對(duì)簡(jiǎn)單,本文將介紹如何使用Flask框架創(chuàng)建一個(gè)簡(jiǎn)單的圖片上傳站點(diǎn),以及其中涉及的關(guān)鍵技術(shù)和步驟,需要的朋友可以參考下2024-05-05