有人能给我解释一下Numpy中meshgrid函数的用途吗?我知道它为绘图创建了某种坐标网格,但我真的看不到它的直接好处.

我正在向塞巴斯蒂安·拉什卡学习"Python机器学习",他正在用它来绘制决策边界.参见输入11 here.

我也try 过官方文档中的这段代码,但是,同样,输出对我来说没有什么意义.

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之间的每个整数值上都有一个点.要创建矩形网格,我们需要x点和y点的所有组合.

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

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

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

由于该函数已在矩形网格上采样,因此该函数现在可以可视化为"图像".

enter image description here

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

Python相关问答推荐

在Transformer中使用LabelEncoding的ML模型管道

如何将新的SQL服务器功能映射到SQL Alchemy的ORM

当值是一个integer时,在Python中使用JMESPath来验证字典中的值(例如:1)

拆分pandas列并创建包含这些拆分值计数的新列

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

使用Keras的线性回归参数估计

如何在msgraph.GraphServiceClient上进行身份验证?

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

Python库:可选地支持numpy类型,而不依赖于numpy

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

将pandas Dataframe转换为3D numpy矩阵

如何更改分组条形图中条形图的 colored颜色 ?

导入...从...混乱

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

Django admin Csrf令牌未设置

启动带有参数的Python NTFS会导致文件路径混乱

在Python中使用if else或使用regex将二进制数据如111转换为001""

dask无groupby(ddf. agg([min,max])?''''

当条件满足时停止ODE集成?

如果包含特定值,则筛选Groupby