np.linspace() 是 NumPy 库中非常常用的函数,主要用于在指定的范围内生成 等间距 的数值序列。它的常见用途包括数值计算、数据可视化、插值等场景,尤其适合生成绘制图形时所需的横坐标数组。

函数签名

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

参数说明

  1. start (必需):
    序列的起始值。生成的数组将从这个值开始。
  2. stop (必需):
    序列的结束值。生成的数组将包含这个值(如果 endpoint=True)。
  3. num (可选):
    生成的等间隔数值的数量,默认为 50。这个参数决定生成的数组中元素的数量。
  4. endpoint (可选):
    是否包含 stop 作为数组的最后一个值。默认为 True,表示包含 stop 值。如果设置为 False,数组将不包括 stop,而是取一个小于 stop 的最大值。
  5. retstep (可选):
    是否返回间隔 step。默认为 False,如果设置为 True,会返回一个元组 (array, step),其中 step 是相邻数值之间的步长。
  6. dtype (可选):
    指定返回数组的数据类型。如果未指定,NumPy 会根据输入的 start 和 stop 值推断数据类型。
  7. axis (可选):
    生成的数组沿指定的轴进行。默认为 0,即沿着第一个轴(行)生成数值。

返回值

  • 返回一个 ndarray,它包含 num 个等间距的数值,从 start 到 stop(包括 stop,如果 endpoint=True)。
  • 如果 retstep=True,返回的是一个元组 (array, step),其中 step 是相邻元素之间的步长。

示例代码

1. 基本示例

import numpy as np

# 生成 0 到 1 之间的 5 个等间距的数值
arr = np.linspace(0, 1, num=5)
print(arr)

输出

[0.   0.25 0.5  0.75 1.  ]

解释np.linspace(0, 1, num=5) 生成了从 0 到 1 之间的 5 个等间距数值,包括 0 和 1

2. 不包括 stop 的值

arr = np.linspace(0, 1, num=5, endpoint=False)
print(arr)

输出

[0.  0.2 0.4 0.6 0.8]

解释:由于 endpoint=False1 不会包含在内,生成的数组只是小于 1 的值。

3. 返回步长

arr, step = np.linspace(0, 1, num=5, retstep=True)
print("Array:", arr)
print("Step size:", step)

输出

Array: [0.   0.25 0.5  0.75 1.  ]
Step size: 0.25

解释retstep=True 返回了数组以及相邻数值之间的步长,步长为 0.25

4. 指定数据类型

arr = np.linspace(0, 1, num=5, dtype=np.float32)
print(arr)

输出

[0.   0.25 0.5  0.75 1.  ]

解释:通过 dtype=np.float32,我们强制返回一个 float32 类型的数组。

5. 多维数组示例

arr = np.linspace(0, 10, num=5, dtype=int, axis=1)
print(arr)

输出

[[ 0  2  4  6  8]]

解释:指定 axis=1,返回的是一个沿着第二个轴(列)生成的数组。


应用场景

  1. 绘图
    np.linspace() 被广泛用于生成需要绘制的横坐标数组,尤其是在绘制数学函数时。它帮助我们获得均匀分布的数值点。import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y = np.sin(x) plt.plot(x, y) plt.show()
  2. 数值计算
    许多数值计算任务(如插值、模拟等)需要生成等间距的数值序列,np.linspace() 提供了一个简洁的方式来实现这一点。
  3. 模拟实验
    比如在物理模拟中,可能需要按一定间隔生成不同时间点的数据,np.linspace() 提供了非常方便的工具。

总结

np.linspace() 是 NumPy 中非常重要且常用的函数,适用于生成指定范围内的等间距数值序列。无论是数据分析、科学计算、模拟实验,还是数据可视化,np.linspace() 都能简化代码并提升效率。

通过它,你可以方便地生成需要的数值序列,并且可以灵活设置参数来控制生成的结果,包括是否包含 stop值、返回步长、数据类型等。