Numpy Meshgrid函数
numpy.meshgrid函数用于从两个给定的一维数组中创建一个矩形网格,代表笛卡尔索引或矩阵索引。Meshgrid函数在某种程度上受到MATLAB的启发。
考虑上图,X轴的范围是-4到4,Y轴的范围是-5到5。所以图中总共有(9*11)=99个点,每个点都有一个X坐标和一个Y坐标。对于任何平行于X轴的直线,标记的点的X坐标分别是-4,-3,-2,-1,0,1,2,3,4。另一方面,对于任何平行于Y轴的线,标记点的Y坐标从下到上分别是-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5。numpy.meshgrid函数返回两个二维数组,代表所有点的X和Y坐标。

示例:
输入
输出
x_1 = array([[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.],
[-4., -3., -2., -1., 0., 1., 2., 3., 4.]])
y_1 = array([[-5., -5., -5., -5., -5., -5., -5., -5., -5.],
[-4., -4., -4., -4., -4., -4., -4., -4., -4.],
[-3., -3., -3., -3., -3., -3., -3., -3., -3.],
[-2., -2., -2., -2., -2., -2., -2., -2., -2.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 2., 2., 2., 2., 2., 2., 2., 2., 2.],
[ 3., 3., 3., 3., 3., 3., 3., 3., 3.],
[ 4., 4., 4., 4., 4., 4., 4., 4., 4.],
[ 5., 5., 5., 5., 5., 5., 5., 5., 5.]])
输入
输出
x_1 = array([[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.]])
y_1 = array([[2., 2., 2., 2., 2., 2.],
[3., 3., 3., 3., 3., 3.],
[4., 4., 4., 4., 4., 4.],
[5., 5., 5., 5., 5., 5.],
[6., 6., 6., 6., 6., 6.],
[7., 7., 7., 7., 7., 7.],
[8., 8., 8., 8., 8., 8.]]
以下是代码。
输出:
meshgrid输出的坐标也可以用于在给定的坐标范围内绘制函数。
An Ellipse:
输出:

Random Data:
输出:

一个正弦函数:
输出:

我们观察到,x_1是一个行重复矩阵,而y_1是一个列重复矩阵。x_1的一行和y_1的一列就足以确定所有点的位置,因为其他的值会被不断地重复。因此,我们可以将上述代码编辑如下。
x_1, y_1 = np.Meshgrid(x, y, sparse = True)
这将产生以下输出。
x_1的形状从(11,9)变为(1,9),y_1的形状从(11,9)变为(11,1)。
然而,矩阵的索引是不同的。实际上,它与笛卡尔的索引完全相反。

对于上图所示的矩阵,对于一个给定的行,Y坐标从左到右增加为0、1、2、3,而对于一个给定的列,X坐标从上到下增加为0、1、2。
从Matrix索引中返回的两个二维数组将是前面程序生成的数组的转置。以下代码可用于获得矩阵索引。
输出:
sparse = True也可以在矩阵索引的Meshgrid函数中加入。在这种情况下,x_2的形状将从(9,11)变为(9,1),y_2的形状将从(9,11)变为(1,11)。