使用 NumPy 生成均匀分布的数字

NumPyNumPyBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本教程中,我们将介绍 NumPy 库中 numpy.linspace() 函数的使用。该函数用于在指定区间内生成均匀分布的数字。它与 numpy.arange() 函数类似,唯一的区别在于它不是通过步长来指定间隔,而是通过 num 参数来指定区间内均匀分布的数字数量。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到 Notebook 标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟,直到 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时可以向 Labby 提问。课程结束后请提供反馈,我们将及时为你解决问题。

理解语法

numpy.linspace() 函数的语法如下:

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

该函数接受以下参数:

  • start: 区间的起始值。
  • stop: 区间的结束值。
  • num: 在区间内生成的均匀分布样本的数量。默认值为 50。
  • endpoint: 一个布尔值,指示是否包含区间的端点。如果为 True,则包含端点;如果为 False,则不包含端点。默认值为 True。
  • retstep: 一个布尔值,指示是否返回步长值,即连续数字之间的间距。默认值为 False。
  • dtype: 数组项的数据类型。

使用 linspace() 生成数组

要使用 numpy.linspace() 生成数组,你只需要传入起始值、结束值以及你想要的样本数量。以下是一个示例:

import numpy as np

a = np.linspace(0, 10, num=11)
print(a)

这段代码的输出将是:

[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

排除端点

要排除端点,我们只需将 endpoint 参数设置为 False。以下是一个示例:

b = np.linspace(0, 10, num=10, endpoint=False)
print(b)

这段代码的输出将是:

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

返回步长值

要返回 linspace() 生成的连续数字之间的步长或间距值,可以将 retstep 参数设置为 True。以下是一个示例:

c, step = np.linspace(0, 10, num=11, retstep=True)
print(c)
print(step)

这段代码的输出将是:

[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
1.0

使用 Linspace() 绘图

我们可以将 linspace()matplotlib 结合使用来绘制图形。以下是一个示例:

import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

plt.plot(x, y)
plt.show()

这段代码的输出是一个简单的正弦波图形。

使用非标量值

从较新版本的 NumPy 开始,linspace() 支持非标量值作为起始和结束参数。以下是一个示例:

start = np.array([0, 1, 2])
end = np.array([6, 7, 8])
d = np.linspace(start, end, num=5, axis=1)
print(d)

这段代码的输出是:

[[0.  1.5 3.  4.5 6. ]
 [1.  2.5 4.  5.5 7. ]
 [2.  3.5 5.  6.5 8. ]]

总结

在本教程中,我们演示了 NumPy 库中 numpy.linspace() 函数的使用。我们介绍了语法、各种参数以及多个示例。通过掌握这些知识,你现在可以快速高效地生成均匀分布的数组。