[转载] 【Python】range()、np.arange()、np.linspace()、np.logspace()的使用和区别

参考链接: Python中的numpy.arange

近期在调试深度学习相关的代码时,经常隔三差五遇到range()、np.arange()、np.linspace()、np.logspace()一系列的函数,每次遇到后,当时貌似理解了,但是过段时间又忘了,并且这几个函数看起来还长的差不多,虽然实现的功能看起来挺相似,但是他们之间还是有很多细微的区别。 

毫不夸张的说,每次见到,每次好像都懂,但是呢,每次貌似又不确定,每次还是懵的、大脑还是混淆的。 

为了一劳永逸的解决上述困惑,做个笔记,把这4个函数放到一起对比,以方便温故知新。 

一、range([start:int],stop:int,[step:int]) 

range()是Python自带的函数。生成一个从start(包含)到stop(不包含),以step为步长的序列。返回一个list对象。start默认值为0,选填;stop是必填;step默认值为1,选填。start、stop、step均须为整型。只能生成整型的序列。

程序验证: 

当参数为非整型时,会报错: 

二、np.arange([start=None], stop=None, [step=None], dtype=None) 

np.arange()属于numpy模块。生成一个从start(包含)到stop(不包含),以step为步长的序列。返回一个ndarray对象。可以生成整型、浮点型序列,毫无压力。当step参数为非整数时(如step=0.1),结果往往不一致。对于这些情况,最好使用“linspace()”函数。

参数含义: 

start:数值型,可选填。包含此值。默认为0。stop:数值型,必填。不包含此值。除非step的值不是整数,浮点舍入会影响“out”的长度。step:数值型,可选填。默认为1,如果步长有指定,则start必须给出来。dtype:数据类型。输出的array数据类型。如果未指定dtype,则输出的array类型由其它的输入参数决定。start、stop、step若任一个为浮点型,那么都会生成一个浮点型序列。

程序验证: 

三、np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 

指定在 start到stop的均分数值(等差数列)。start:不可缺省。stop:有时包含,有时不包含,根据endpoint来选择,默认包含。num:指定均分的数量,默认为50。endpoint:布尔值,可选,默认为True。包含stop就True,不包含就Falseretstep:布尔值,可选,默认为False。如果为True,返回值和步长dtype:输出数据类型,可选。如果不指定,则根据前面参数的数据类型

程序验证: 

四、np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) 

返回一个等比数列。 

参数: 

start:float类型,基底base的start次幂作为左边界stop:float类型,基底base的stop次幂作为右边界num:指定等比数值的数量,默认为50endpoint:布尔值,可选,默认为True。包含stop就True,不包含就Falsebase:float类型,选填,基底dtype:输出数据类型。

返回值:ndarray类型 

logspace()函数,等价于如下代码: 

y = np.linspace(start, stop, num=num, endpoint=endpoint)

power(base, y).astype(dtype) 

程序验证: 

五、list 与 numpy.ndarray区别 

上述四个函数,range()返回值为list类型,其余为ndarray类型,看着差不多,这两种类型有什么区别呢? 

python中的二维数组,主要有 list(列表) 和 numpy.ndarray(多维数组) 两种, 两种的区别主要体现在numpy.ndarray 支持更多的索引方式,下面通过代码来看一下两种数据类型索引方式的区别: 

对a和b的元素进行访问: 

两者区别: 

可以看到numpy.ndarray 比list的访问方式更灵活,因此在处理数据时,可以通过np.array()方便的将list转化为numpy.ndarray, 当然处理完后还可以通过tolist()将ndarray再转回列表,从而方便删除或添加元素。 

参考: 

http://www.mamicode.com/info-detail-2449535.htmlhttps://blog.csdn.net/ui_shero/article/details/78881067https://www.jianshu.com/p/f8e6a0a6399f

猜你喜欢

转载自blog.csdn.net/u013946150/article/details/113057608
np