Python range()与Numpy arange()的用法和区别

it2023-07-20  66

参考:

https://www.cnblogs.com/onemorepoint/p/8126181.htmlhttps://www.cnblogs.com/quietwalk/p/8003862.html

1. range()

range(start, end, step),返回一个list对象,起始值为start,终止值为end,但不含终止值,步长为step。只能创建int型list。

参数含义: start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5); end:计数到end结束,但不包括end。例如:range(0, 5)是[0, 1, 2, 3, 4],没有5; step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。 函数返回的是一个range object。

>>> range(0,5) #生成一个range object,而不是[0,1,2,3,4] range(0, 5) >>> c = [i for i in range(0,5)] #从0 开始到4,不包括5,默认的间隔为1 >>> c [0, 1, 2, 3, 4] >>> c = [i for i in range(0,5,2)] #间隔设为2 >>> c [0, 2, 4] >>>range(1,5) range(1,5) >>>tuple(range(1, 5)) (1, 2, 3, 4) >>>list(range(1, 5)) [1, 2, 3, 4] >>>r = range(1, 5) >>>type(r) <class 'range'> >>>for i in range(1, 5): ... print(i) 1 2 3 4 >>>range(1, 5, 2) >>>for i in range(1, 5, 2): ... print(i) 1 3

注意:range()不支持步长为小数:

>>>range(1, 5, .1) # range中的setp 不能使float Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'float' object cannot be interpreted as an integer

2. arange()

arange(start, end, step),与range()类似,但是返回一个array对象。需要引入import numpy as np,并且arange可以使用float型数据。 >>> np.arange(1, 5) array([1, 2, 3, 4]) >>for i in np.arange(1, 5): ... print(i) 1 2 3 4

np.arange()支持步长为小数:

>>>np.arange(1, 5, .5) array([ 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

小结

range()返回的是range object,而np.arange()返回的是numpy.ndarray() 。

range仅可用于迭代,而np.arange作用远不止于此,它是一个数组,可被当做向量使用。

range()不支持步长为小数,np.arange()支持步长为小数。

两者都可用于迭代。

两者都有三个参数,以第一个参数为起点,第三个参数为步长,截止到第二个参数之前的不包括第二个参数的数据序列 。

某种意义上,和STL中由迭代器组成的区间是一样的,即左闭右开的区间。[first, last)或者不加严谨地写作[first:step:last)

补充 :NumPy Ndarray 对象

NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器,该对象由两部分组成: 实际的数据; 描述这些数据的元数据;

大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据。数组的维数称为秩,简单来说就是如果你需要获取数组中一个特定元素所需的坐标数,如a是一个2×3×4的矩阵,你索引其中的一个元素必须给定三个坐标a[x,y,z],故它的维数就是3。而轴可以理解为一种对数组空间的分割,以数组a为例,如果我们以0为轴,那么a可以看成是一个由两个元素构成的数组,其中每个元素都是一个3×4的数组。

我们可以直接将数组看作一种新的数据类型,就像list、tuple、dict一样,但数组中所有元素的类型必须是一致的,Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy中添加了许多其他的数据类型,如bool、inti、int64、float32、complex64等。同时,它也有许多其特有的属性和方法。

常用ndarray属性:

dtype 描述数组元素的类型shape 以tuple表示的数组形状ndim 数组的维度size 数组中元素的个数itemsize 数组中的元素在内存所占字节数T 数组的转置flat 返回一个数组的迭代器,对flat赋值将导致整个数组的元素被覆盖real/imag 给出复数数组的实部/虚部nbytes 数组占用的存储空间

常用ndarray方法:

reshape(…) 返回一个给定shape的数组的副本resize(…) 返回给定shape的数组,原数组shape发生改变flatten()/ravel() 返回展平数组,原数组不改变astype(dtype) 返回指定元素类型的数组副本fill() 将数组元素全部设定为一个标量值sum/Prod() 计算所有数组元素的和/积mean()/var()/std() 返回数组元素的均值/方差/标准差max()/min()/ptp()/median() 返回数组元素的最大值/最小值/取值范围/中位数argmax()/argmin() 返回最大值/最小值的索引sort() 对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序view()/copy() view创造一个新的数组对象指向同一数据;copy是深复制tolist() 将数组完全转为列表,注意与直接使用list(array)的区别compress() 返回满足条件的元素构成的数组
最新回复(0)