浅谈Python中range与Numpy中arange的比较
本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明。
1.range与arange的比较
(1)相同点:A、参数的可选性、默认缺省值是一样的;B、结果均包括开始值,不包括结束值;C、arange的参数为整数是,与range函数等价;D、都具备索引查找、要素截取等操作。
(2)不同点:A、range函数的参数只能为整数,arange的参数为数值型,包括整数和浮点数;B、输出的数据类型不同,range的输出为列表(list),arange的结果为数组(ndarray);C、range的最后一个元素,不会超过stop,而arange的最后一个元素可能会比stop的值大。
2.python中的范围range
(1)官方文档对range的定义为:Therangetyperepresentsanimmutablesequenceofnumbersandiscommonlyusedforloopingaspecificnumberoftimesinforloops.(range代表不可变的数字序列,通常用于一定次数的循环中)。
若步长为正数,范围r的值由公式r[i]=start+step*i确定,限制条件为i>=0、r[i] 若步长为负数,范围r的值同样由公式r[i]=start+step*i确定,但限制条件为i>=0、r[i]>stop; (2)参数说明 range(start,stop[,step]) start:序列的开始值,如果缺省默认为0; stop:序列的结束值; step:序列的步长,缺省的默认值为1。 range中所有的参数必须为整数,必须为整数! (3)range的其他说明 A、range相比常规list或tuple的优势在于,不管range代表的范围有多大,它实际上只存储范围的开始、结束和步长值,它占用相同且很小的内存空间; B、range继承于collections.abc.Sequence,提供诸如包含内容是否相等的比较、索引查找、要素截取、支持负数索引等。 3.Numpy中的arange (1)官方文档中的定义:Returnevenlyspacedvalueswithinagiveninterval.(返回给定间距内返回均匀间隔的值) Valuesaregeneratedwithinthehalf-openinterval[start,stop)(inotherwords,theintervalincludingstartbutexcludingstop).ForintegerargumentsthefunctionisequivalenttothePythonbuilt-inrangefunction,butreturnsanndarrayratherthanalist.(值的范围在半开放的间隔[start,dtop)内,也就是包括start起始值,不包括stop结束值;若参数均为整数,与python中的range函数等价,但是它返回的是数组而非列表)Whenusinganon-integerstep,suchas0.1,theresultswilloftennotbeconsistent.Itisbettertouselinspaceforthesecases.(当使用非整数步长时,比如0.1,结果经常不是一致的,在这种情况下,最好使用线性等分向量)。 (2)参数说明 numpy.range([start,]stop,[step,]dtype=None) start:数字型,可选参数,间隔的开始值,间隔包括开始值,缺省时的默认值是0; stop:数字型,必填参数,间隔的结束值,间隔不包括结束值,除非一些特殊情况,比如步长不是整数,浮点数的四舍五入影响到输出的长度; step:数组型,可选参数,间距值,对任何输出,它是相邻两个值之间的差值,out[i+1]-out[i],缺省的默认值为1,如果指定间距值,开始值也必须指定。 dtype:输出数组的类型,如果没有指定,从输入参数的类型推断输出结果的数据类型(即与输入参数的类型保持一致)。 返回值:等间距的数组,对浮点型参数,结果的长度为ceil((stop-start)/step),因浮点溢出,这可能导致最后一个元素大于结束值。 4、简单的示例 5、python2.x版本中xrange的说明 在python2.x版本中,对于非常长的范围,建议使用xrange,其参数与range一样,但不会预先产生所有的值,而是返回一个用于逐个产生整数的迭代器。在python3中,range始终返回迭代器,因而没必要再使用xrange这个函数了。
以上这篇浅谈Python中range与Numpy中arange的比较就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。 声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
In[4]:importnumpyasnp
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])