有人可以向我解释 meshgrid
Numpy 中的函数的目的是什么吗?我知道它为绘图创建了某种坐标网格,但我看不到它的直接好处。
我正在学习 Sebastian Raschka 的“Python 机器学习”,他正在使用它来绘制决策边界。请参见 此处 的输入 11。
我也尝试过官方文档中的这段代码,但是,输出对我来说真的没有意义。
x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
h = plt.contourf(x,y,z)
如果可能的话,请给我展示很多真实世界的例子。
原文由 HonzaB 发布,翻译遵循 CC BY-SA 4.0 许可协议
meshgrid
的目的是从 x 值数组和 y 值数组创建一个矩形网格。因此,例如,如果我们要创建一个网格,其中在 x 和 y 方向上的每个整数值都在 0 到 4 之间有一个点。要创建一个矩形网格,我们需要
x
和y
点的所有组合。这将是25分,对吧?因此,如果我们想为所有这些点创建一个 x 和 y 数组,我们 可以 执行以下操作。
这将导致以下
x
和y
矩阵,这样每个矩阵中对应元素的配对给出了网格中一个点的 x 和 y 坐标。然后我们可以绘制它们以验证它们是一个网格:
显然,这变得非常乏味,特别是对于大范围的
x
和y
。相反,meshgrid
实际上可以为我们生成这个:我们必须指定唯一的x
和y
值。现在,当我们调用
meshgrid
时,我们会自动获得之前的输出。创建这些矩形网格对许多任务很有用。在您在帖子中提供的示例中,这只是一种在
x
和y
的值范围内对函数(sin(x**2 + y**2) / (x**2 + y**2)
)进行采样的方法.因为这个函数是在一个矩形网格上采样的,所以现在可以将这个函数可视化为一个“图像”。
此外,现在可以将结果传递给期望矩形网格上的数据的函数(即
contourf
)