np.linspace() 是 NumPy 库中的一个函数,常用于创建指定范围内的等间距数值序列。它可以生成一个包含指定数量的等间距数值的数组。这个函数非常适合用于数据可视化和科学计算中,尤其是需要创建从某个起始值到结束值的等间隔数值时。

函数签名

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

参数说明

  1. start:序列的起始值。
    • 这是生成的数组的第一个数值。
  2. stop:序列的结束值。
    • 这是生成的数组的最后一个数值,默认情况下stop 是包含在数组中的(由 endpoint 参数控制)。
  3. num (可选):生成的等间隔数值的数量,默认值是 50
    • 这意味着生成的数组中会包含 num 个元素,从 start 到 stop
  4. endpoint (可选):是否包含 stop 作为最后一个值。默认为 True
    • 如果 endpoint=True,则数组的最后一个值将是 stop
    • 如果 endpoint=False,则数组的最后一个值将会是小于 stop 的一个数值,使得生成的值在给定的 num 个值之间平均分布,但不包括 stop
  5. retstep (可选):是否返回步长 step。默认为 False
    • 如果为 True,返回一个元组 (array, step),其中 step 是相邻两个数值之间的间隔。
  6. dtype (可选):指定生成数组的数据类型。默认为 None,根据生成的数据自动推断。
  7. axis (可选):沿着指定的轴创建数值序列,默认为 0。这个参数通常用于多维数组。

返回值

返回一个 ndarray,其中包含 num 个等间隔的值。

示例

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 个等间隔的数值。

2. 不包括 stop 值

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

输出

[0.  0.2 0.4 0.6 0.8]

解释:由于 endpoint=False,生成的数组不包括 1,而是生成了小于 1 的等间隔数值。

3. 返回步长

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

输出

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

解释:retstep=True 时,除了返回数组本身,还返回相邻数值之间的步长。

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

应用场景

  • 绘图:在绘制函数图像时,常常需要在一定范围内生成大量的等间隔数值作为横坐标。
  • 数值计算:在科学计算中,很多情况下需要创建等间隔的点进行插值或数值积分等。
  • 模拟:例如,在模拟物理系统、求解微分方程时,需要生成一系列等间距的离散值。

总结

np.linspace() 是一个非常实用的函数,适用于需要创建等间距数值序列的场景,常用于科学计算、数据分析以及可视化任务中。它的灵活性体现在可以设置序列的起始和结束值、元素数量、步长以及是否包含结束值等方面。