python教程,如何利用linspace()生成等差数列?对比arange()
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
不出所料,本文这个可以生成个等差数列数据的linspace()
函数,又是来自numpy
。numpy
果然是个神奇的数学计算包。不过,本文的np.linspace()
函数,和以前描述过的np.arange()
函数,是非常的相似。所以,本文会对两者进行一下对比。
苏南大叔的"程序如此灵动"技术博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
。
np.arange()对比
这个np.arange()
函数,在以前已经做过描述:
下面的代码是做个简要的回顾:
import numpy as np
x = np.arange(10)
print(x) # [0 1 2 3 4 5 6 7 8 9]
x = np.arange(0, 10, 5)
print(x) # [0 5]
输出:
[0 1 2 3 4 5 6 7 8 9]
[0 5]
np.linspace()原型
函数原型如下:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数含义对照表:
参数 | 含义 |
---|---|
start | 开始点 |
stop | 结束点 |
num | 要生成的等间隔样例数量,默认为 50 |
endpoint | 是否在间隔的末端包含 stop 值,默认为 True |
retstep | 是否返回样例间隔。如果为 True,则返回 (samples, step) |
dtype | 输出数组类型 |
np.linspace()范例
下面的是一些范例:
import numpy as np
x = np.linspace(0, 10, 5)
print(x) # [ 0. 2.5 5. 7.5 10. ]
x = np.linspace(0, 10, 5, endpoint=False)
print(x) # [0. 2. 4. 6. 8.] 不包括最后的10,和arange()就很相似了
x, step = np.linspace(0, 10, 5, retstep=True)
print(x) # [ 0. 2.5 5. 7.5 10. ]
print(step) # 2.5
x = np.linspace(0, 10, 5, dtype=int)
print(x) # [ 0 2 5 7 10]
输出:
[ 0. 2.5 5. 7.5 10. ]
[0. 2. 4. 6. 8.]
[ 0. 2.5 5. 7.5 10. ]
2.5
[ 0 2 5 7 10]
np.arange() 对比 np.linspace()
对比一下的话:
arange()
可以只传递一个最大值max
,linspace()
至少要写两个值start
、end
。arange()
的生成范围是[min,max)
,linspace()
的生成范围则是:[start,end]
。arange()
的第三个参数是步长step
,linspace()
的第三个参数是num
(生成多少个点),步长step
是自动计算的。linspace()
存在着多个其它参数:endpoint
/retstep
/dtype
。linspace()
的生成结果,即使是整数,也显示为浮点(后面有个.
)。
再次对比总结
方法 | 参数1 | 参数2 | 参数3 | 参数4 | 参数5 | 参数6 | 返回值 |
---|---|---|---|---|---|---|---|
.arange() | start | end | step=1 | 无 | 无 | 无 | [i]/[f] |
.linspace() | start | end | num=50 | endpoint=True | retstep=False | dtype=None | [f] |
忽略np.linspace()
的后三个参数,再次来对比一下两个方法。下面的例子,可以一眼看出两者最大区别:
import numpy as np
a1 = np.arange(6) # [0 1 2 3 4 5]
# a2 = np.linspace(6) # TypeError: linspace() missing 1 required positional argument: 'stop'
a1 = np.arange(0,6) # [0 1 2 3 4 5]
a2 = np.linspace(0,6)
'''
[0. 0.12244898 0.24489796 0.36734694 0.48979592 0.6122449
0.73469388 0.85714286 0.97959184 1.10204082 1.2244898 1.34693878
1.46938776 1.59183673 1.71428571 1.83673469 1.95918367 2.08163265
2.20408163 2.32653061 2.44897959 2.57142857 2.69387755 2.81632653
2.93877551 3.06122449 3.18367347 3.30612245 3.42857143 3.55102041
3.67346939 3.79591837 3.91836735 4.04081633 4.16326531 4.28571429
4.40816327 4.53061224 4.65306122 4.7755102 4.89795918 5.02040816
5.14285714 5.26530612 5.3877551 5.51020408 5.63265306 5.75510204
5.87755102 6. ]
'''
a1 = np.arange(0,6,3) # [0 3]
a2 = np.linspace(0,6,3) # [0. 3. 6.]
方法 | 参数个数 | start | stop | 第三个参数 |
---|---|---|---|---|
np.arange() | 一个 | 默认0 | 不包含stop | 默认步长1 |
np.linspace() | 一个 | start | 不写就报错 | 已经报错了 |
np.arange() | 两个 | start包含 | stop不包含 | 默认步长1 |
np.linspace() | 两个 | start包含 | stop包含 | 默认返回个数50 |
np.arange() | 三个 | start包含 | stop不包含 | 步长 |
np.linspace() | 三个 | start包含 | stop包含 | 个数 |
相关文章
结束语
苏南大叔的python
系列文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。