Python NumPy linspace函数详解:参数、实战与源码解析

键盘旁的猫
键盘旁的猫
发布时间:2026-10-12 | 3人浏览过
原创

本文深入解析Python NumPy库中的linspace函数,详细讲解start、stop、num、endpoint、retstep、axis及dtype等核心参数的用法。通过对比arange函数,结合源码复现与多组代码示例,展示如何生成均匀分布的数值序列,涵盖基础绘图、元组返回及多维数组轴操作等实战场景。

Python NumPy linspace函数详解

前言

在使用Matplotlib进行绘图时,经常能看到该函数的应用。为了更透彻地理解其机制,本文将深入源码进行实战复现与分析。

该函数的主要功能是在线性区间内生成等间距的数值序列。虽然numpy.arange()也能实现类似功能,但在处理浮点数时可能存在精度丢失问题,因此 linspace()对浮点数的支持更为友好。在适当参数设置下,两者均可选用,但linspace通常能提供更精确的控制。

1. 函数源码与参数解析

具体源码实现如下:numpy.linspace(start, end, num=num_points,endpoint=False,retstep=True,axis=0,dtype=int)

以下是各参数的详细讲解:

  • 生成的序列范围在[start, end]之间,包含num_points个元素。
  • endpoint参数默认为True。若设置为False,生成的序列范围为[start, end),即不包含最后一个元素,但元素总数仍为num_points个。
  • retstep参数默认为False。若设置为True,函数返回的序列结果将是一个元组,包含生成的序列和步长,范围仍在[start, end]内。
  • axis参数用于指定存储轴的维度,仅对数组类型有效。默认为0,表示在开始处插入新轴;若设为-1,则表示在序列末尾插入轴。
  • dtype参数默认类型为int,但在实际输出中常表现为float类型,可根据需要指定。

2. 实战代码演示

该函数的最基础使用方式如下所示:

import numpy as np
import matplotlib.pyplot as plt
x1 = np.linspace(-5, 5, 5)
# 让y直接为0
y = np.zeros(5)
# 画图,具体用*号表示
plt.plot(x1, y, '*')
# 设置当前轴的y限制
plt.ylim([-0.5, 0.5])
plt.show()
# 输出 [-5.  -2.5  0.   2.5  5. ]
print(x1)
# 输出的长度为 5 
print(len(x1))

运行截图如下:

若设置endpoint参数为False,则结果中不包含最后一个关键字值,具体代码如下:

import numpy as np
import matplotlib.pyplot as plt
x1 = np.linspace(-5, 5, 5,endpoint=False)
y = np.zeros(5)
plt.plot(x1, y, '*')
plt.ylim([-0.5, 0.5])
plt.show()
## 注意其中的区别 ## 
# 输出 [-5. -3. -1.  1.  3.]
print(x1)
# 输出的长度为 5 
print(len(x1))

运行截图如下:

若设置retstep参数,输出结果将变为元组类型(请注意代码中的区别):

import numpy as np
import matplotlib.pyplot as plt
x1 = np.linspace(-5, 5, 5,retstep=True)
y = np.zeros(5)
# 代码无法使用,因为是元组类型,无法画图 
# plt.plot(x1, y, '*')
# plt.ylim([-0.5, 0.5])
# plt.show()
# ## 注意其中的区别 ## 
# 输出(array([-5. , -2.5,  0. ,  2.5,  5. ]), 2.5)
print(x1)
# 输出的长度为 2
print(len(x1))

若设置axis参数,代码区别如下所示:

import numpy as np
import matplotlib.pyplot as plt
x1 = np.array([[1, 2], [3, 4]])
x2 = np.array([[5, 6], [7, 8]])
s = np.linspace(x1,x2,3, axis=1)
print(s)
# 输出的长度为 2
print(len(s))

当axis=1时,输出结果为:

[[[1. 2.] [3. 4.] [5. 6.]] [[3. 4.] [5. 6.] [7. 8.]]]

当axis=0时,输出结果为:

[[[1. 2.] [3. 4.]] [[3. 4.] [5. 6.]] [[5. 6.] [7. 8.]]]

补充说明:Python NumPy中linspace函数的特性

Python NumPy中linspace函数详解

NumPy提供的linspace函数(常简写为np.linspace)是Python中创建数值序列的重要工具。它与NumPy的arange函数类似,都能生成与NumPy数组结构相似的均匀分布数值序列。尽管两者存在差异,但大多数开发者更倾向于使用linspace,因为它易于理解且功能强大,值得深入学习其用法。

本文将学习linspace函数及其相关语法,并通过具体示例解释各个参数。最后,还将简要提及np.linspace与np.arange之间的主要区别。

1. 快速了解

该函数通过定义均匀间隔来创建数值序列。使用时需指定间隔的起始点、终止端以及分隔值的总数(包括起始点和终止点)。最终,函数返回一个间隔类均匀分布的数值序列。请看以下示例:

np.linspace(start = 0, stop = 100, num = 5)

代码生成NumPy数组(ndarray对象),结果如下:array([ 0., 25., 50., 75., 100.]) 如图所示:

让我们解释一下,NumPy linspace函数依据定义好的间隔生成均匀分布的数值。我们使用start和stop参数指定间隔,这里设定为0和100,同时指定在范围内生成5个观测值,因此函数生成5个均匀分布的元素。第一个元素是0,最后一个元素是100,其余三个元素分布在0和100之间。

下面我们将详细查看linspace函数的各个参数,以便更清晰地理解其工作机制。

2. linspace函数语法

linspace的语法非常简单直接。如下图所示,首先是函数名称,对应代码为np.linspace(假设已导入import numpy as np)。

图2

上图展示了三个参数,这是日常使用中最频繁的三个参数。此外还有其他可选参数,下面我们将逐一讨论。为了更好理解参数,我们再次参考图示:

start start参数指定数值范围的起始点。如果设置为0,则结果中的第一个数为0。该参数是必须提供的。

stop stop参数指定数值范围的终止点。通常它是结果中的最后一个值,但如果修改endpoint=False,则结果中不包括该值(后续示例会说明)。

num(可选) num参数控制结果中共有多少个元素。如果num=5,则输出数组包含5个元素。该参数为可选,缺省值为50。

endpoint(可选) endpoint参数决定终止值(由stop参数指定)是否被包含在结果数组中。如果endpoint=True,结果中包含终止值;反之则不包含。缺省值为True。

dtype(可选) 与其他NumPy函数一样,np.linspace中的dtype参数决定输出数组的数据类型。如果不指定,Python会基于其他参数值推断数据类型。如需指定,可显式设置参数值为NumPy和Python支持的任意数据类型。

我们并不需要每次都使用所有参数,如果缺省值能满足需求即可。通常start、stop和num比endpoint和dtype更常用。

位置参数与命名参数

实际调用时无需显式指定参数名称,可以通过参数位置直接匹配:

np.linspace(0, 100, 5)

上述代码与前一个示例功能一致:np.linspace(start = 0, stop = 100, num = 5)。 前者使用位置匹配,后者使用名称匹配。位置匹配使代码简洁,而名称匹配使代码更具可读性。在实际应用中,我们鼓励使用名称匹配来调用函数。

3. 示例演示

下面通过具体示例学习每个参数的含义。

3.1 从0到1,间隔为0.1的数值序列

np.linspace(start = 0, stop = 1, num = 11)

输出结果为:

array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

当你需要处理百分比场景时,该功能非常有用。

3.2 从0到100,间隔为10的数值序列

np.linspace(start = 0, stop = 100, num = 11)

输出结果为:

array([ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.])

该示例与前一个类似,但在实际应用中非常常见。

3.3 使用endpoint参数

前文提到,endpoint参数决定终止值是否被包含在结果数组中。缺省值为True,即包括在结果中;若设为False,则不包括。请看示例:

np.linspace(start = 1, stop = 5, num = 4, endpoint = False)

因为endpoint=False,所以5不在结果中。结果为1到4。

array([ 1.,  2.,  3.,  4.])

个人认为该参数不够直观,平时一般不使用。

3.4 手动指定数据类型

默认情况下,linspace根据其他参数类型推断数据类型,很多时候输出结果为float类型。如果需要指定数据类型,可以通过dtype设置。该参数很直接,除了linspace外,其他函数如np.array、np.arange等也支持此参数。示例如下:

np.linspace(start = 0, stop = 100, num = 5, dtype = int)

这里dtype为int,结果为int类型,而不是float类型。

4. 总结

本文通过示例学习了linspace函数。如果你熟悉NumPy,一定也注意到还有np.arange函数。两者最大差异在于,linspace能够精确控制终止值,而arange能够更直接地控制序列中值之间的增量。

到此这篇关于Python NumPy中linspace函数详解的文章就介绍到这了,更多相关Python NumPy linspace函数内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表