这些代码行做了什么?

时间:2016-09-08 14:30:39

标签: python numpy

我正在使用numpy。我遇到了这行代码。

a = (1.,80.,5.)

这是什么意思?在其他一行,我找到了

aList = np.arange(a[0], a[1]+a[2], a[2])

注意: np是从numpy分配的命名空间。

5 个答案:

答案 0 :(得分:2)

对于第一个代码段,您要创建一个包含3个数字1,8和5的元组。

a=(1.,80.,5.)
1.0, 80.0, 5.0)

在第二个代码段中,您正在安排一个列表,其间均值为1到81(因为您要添加12),其间距为5.

np.arange(a[0], a[1]+a[2], a[2]) 
array([  1.,   6.,  11.,  16.,  21.,  26.,  31.,  36.,  41.,  46.,  51.,
        56.,  61.,  66.,  71.,  76.,  81.])

来自numpy help

  

numpy.arange ([start,] stop,[step,] dtype = None)

     

在给定的时间间隔内返回均匀间隔的值。

     

在半开区间[开始,停止]内生成值(换句话说,包括开始但不包括停止的区间)。对于整数参数,该函数等效于Python内置范围函数,但返回的是ndarray而不是列表。

编辑正如a.smiet指出的那样,代码会创建一个元组而不是列表。正如here

指出的那样,两者之间存在差异

答案 1 :(得分:1)

a是浮动的元组。元组是一种类似于列表的结构,但是不可变(即,一旦创建了它就不能修改它的任何组件)。但是,就像列表一样,它可以被编入索引。

理论上,一些元组有特殊的名称,例如2的元组称为一对,3的元组称为三元组等(人们不一定称之为,但是它有助于理解它们什么是元组)。 因为它是不可变的,从概念上讲它被认为是一个独特的对象,而不是一个集合;因此,它也可以有效地用作字典的键(而不是不能列出的列表)。

要创建元组,可以在括号内创建逗号分隔的对象序列,即()(而不是括号,即[],您将创建列表)。

至于花车,浮动3.0也可以简写为3.

numpy.arange函数然后通过使用元组的组件作为参数调用它来创建范围。在您的特定情况下,它将创建一系列从1到80 + 5的数字,增量为5。

元组的一个非常酷的用法是它们可以扩展为函数的一系列参数。例如如果您有一个元组a = (1.,10.,2.),并且想要拨打numpy.arange(a[0], a[1], a[2]),则可以改为numpy.arange(*a)

答案 2 :(得分:0)

第一行只是一个元组。

第二行使用np.arange方法,该方法返回给定间隔内的间隔值:

np.arange(start, stop, step)

您拥有的参数是使用元组aa[0] = 1a[1] = 80等等......

答案 3 :(得分:0)

a = (1.,80.,5.)

创建一个包含3个浮点数(1.0,80.0和5.0)的元组。

aList = np.arange(a[0], a[1]+a[2], a[2])

创建此列表:

[  1.   6.  11.  16.  21.  26.  31.  36.  41.  46.  51.  56.  61.  66.  71. 76.  81.]

其中,根据http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html表示1.0是一个开始,85.0(80 + 5)是结束,5.0是创建间隔值的步骤(函数的参数)。

答案 4 :(得分:0)

对于第一个,它是3个项目的元组:

>>> a = (1.,80.,5.)
>>> a
(1.0, 80.0, 5.0)

对于第二个,它会生成一个列表(开始:1.0,结束:80.0 + 5.0,步骤:5.0):

>>> a_list = numpy.arange(a[0], a[1]+a[2], a[2])
>>> a_list
array([  1.,   6.,  11.,  16.,  21.,  26.,  31.,  36.,  41.,  46.,  51.,
        56.,  61.,  66.,  71.,  76.,  81.])