浅谈Python中range与Numpy中arange的比较


Posted in Python onMarch 11, 2020

本文先比较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的定义为:The range type represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops.(range代表不可变的数字序列,通常用于一定次数的循环中)。

若步长为正数,范围r的值由公式r[i] = start + step*i确定,限制条件为i >=0、r[i] < stop;

若步长为负数,范围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)官方文档中的定义:Return evenly spaced values within a given interval.(返回给定间距内返回均匀间隔的值)

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.(值的范围在半开放的间隔[start, dtop)内,也就是包括start起始值,不包括stop结束值;若参数均为整数,与python中的range函数等价,但是它返回的是数组而非列表)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.(当使用非整数步长时,比如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、简单的示例

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的说明

在python2.x版本中,对于非常长的范围,建议使用xrange,其参数与range一样,但不会预先产生所有的值,而是返回一个用于逐个产生整数的迭代器。在python3 中,range始终返回迭代器,因而没必要再使用xrange这个函数了。

以上这篇浅谈Python中range与Numpy中arange的比较就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
python实现web方式logview的方法
Aug 10 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
Django logging配置及使用详解
Jul 23 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
python 协程 gevent原理与用法分析
Nov 22 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 Python
PyQt实现计数器的方法示例
Jan 18 Python
python读取当前目录下的CSV文件数据
Mar 11 #Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 #Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 #Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 #Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 #Python
GDAL 矢量属性数据修改方式(python)
Mar 10 #Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 #Python
You might like
PHP循环获取GET和POST值的代码
2008/04/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP代码加密的方法总结
2020/03/13 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
javascript如何创建对象
2016/08/29 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python秒算24点实现及原理详解
2019/07/29 Python
python 模拟登陆163邮箱
2020/12/15 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
大学生求职自我评价
2014/01/16 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
宣传口号大全
2014/06/16 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python