gpt4 book ai didi

python - Python/NumPy 中 meshgrid 的用途是什么?

转载 作者:行者123 更新时间:2023-12-05 06:54:47 24 4
gpt4 key购买 nike

谁能给我解释一下 Numpy 中 meshgrid 函数的用途是什么?我知道它会创建某种用于绘图的坐标网格,但我看不到它的直接好处。

我正在学习 Sebastian Raschka 的“Python 机器学习”,他用它来绘制决策边界。参见输入 11 here .

我也试过官方文档中的这段代码,但同样,输出对我来说并没有真正意义。

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)

如果可能的话,请给我看很多真实世界的例子。

最佳答案

meshgrid 的目的是根据 x 值数组和 y 值数组创建矩形网格。

因此,例如,如果我们想要创建一个网格,我们在 x 和 y 方向上的每个介于 0 和 4 之间的整数值处都有一个点。要创建矩形网格,我们需要 xy 点的所有组合。

这将是 25 分,对吗?因此,如果我们想为所有这些点创建一个 x 和 y 数组,我们可以执行以下操作。

x[0,0] = 0    y[0,0] = 0
x[0,1] = 1 y[0,1] = 0
x[0,2] = 2 y[0,2] = 0
x[0,3] = 3 y[0,3] = 0
x[0,4] = 4 y[0,4] = 0
x[1,0] = 0 y[1,0] = 1
x[1,1] = 1 y[1,1] = 1
...
x[4,3] = 3 y[4,3] = 4
x[4,4] = 4 y[4,4] = 4

这将产生以下 xy 矩阵,这样每个矩阵中对应元素的配对给出了矩阵中某个点的 x 和 y 坐标网格。

x =   0 1 2 3 4        y =   0 0 0 0 0
0 1 2 3 4 1 1 1 1 1
0 1 2 3 4 2 2 2 2 2
0 1 2 3 4 3 3 3 3 3
0 1 2 3 4 4 4 4 4 4

然后我们可以绘制这些以验证它们是一个网格:

plt.plot(x,y, marker='.', color='k', linestyle='none')

enter image description here

显然,这变得非常乏味,尤其是对于大范围的 xy。相反,meshgrid 实际上可以为我们生成这个:我们需要指定的只是唯一的 xy 值。

xvalues = np.array([0, 1, 2, 3, 4]);
yvalues = np.array([0, 1, 2, 3, 4]);

现在,当我们调用 meshgrid 时,我们会自动获得之前的输出。

xx, yy = np.meshgrid(xvalues, yvalues)

plt.plot(xx, yy, marker='.', color='k', linestyle='none')

enter image description here

创建这些矩形网格对许多任务很有用。在您在帖子中提供的示例中,它只是一种对函数进行采样的方法 (sin(x**2 + y**2)/(x**2 + y**2)) 在 xy 的值范围内。

因为此函数已在矩形网格上采样,所以现在可以将该函数可视化为“图像”。

enter image description here

此外,现在可以将结果传递给需要矩形网格数据的函数(即 contourf)

关于python - Python/NumPy 中 meshgrid 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65465554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com