如何遍历 MeshGrid?
How can I iterate over a MeshGrid?
我有一个函数 returns 点 (x, y) 的密度估计。我想遍历给定二维网格的所有 (x, y) 点,并让密度函数计算每个点的估计值,这样我就可以得到一个密度值矩阵,然后可以绘制它。
假设该函数称为 density(x, y)
,它取任意点 (x, y) 和 returns 该点 (x, y) 的密度估计值 (z)。我希望能够将该函数应用于二维网格中的每个点并存储密度估计值,我可以在其中使用 plt.pcolormesh()
查看密度。
我该怎么做?
我想你想要类似的东西。
首先,定义一个密度函数。为简单起见,我使用函数 |x| + |y|
.
def density(x, y):
return np.abs(x) + np.abs(y)
现在让我们沿 x
和 y
维度定义点并填充数组。在下面的示例中,x
和 y
是存储 n_x
和 n_y
点的一维数组,每个点在 [-1, 1]
.
中均匀采样
n_x = 100
n_y = 100
x = np.linspace(-1, 1, n_x)
y = np.linspace(-1, 1, n_y)
根据点对计算网格并计算网格中每个点的密度 D
。
xx, yy = np.meshgrid(x, y)
D = density(xx, yy)
请注意,您不需要显式迭代 meshgrid,您也可以对数组 xx
和 yy
使用看似标量的 density()
函数。有关 meshgrid
的详细信息,请参阅此 page。
接下来直接用pcolormesh()
显示或保存即可
plt.pcolormesh(x, y, D)
plt.title('Density function = |x| + |y|')
plt.savefig('density.png')
输出为:
我有一个函数 returns 点 (x, y) 的密度估计。我想遍历给定二维网格的所有 (x, y) 点,并让密度函数计算每个点的估计值,这样我就可以得到一个密度值矩阵,然后可以绘制它。
假设该函数称为 density(x, y)
,它取任意点 (x, y) 和 returns 该点 (x, y) 的密度估计值 (z)。我希望能够将该函数应用于二维网格中的每个点并存储密度估计值,我可以在其中使用 plt.pcolormesh()
查看密度。
我该怎么做?
我想你想要类似的东西。
首先,定义一个密度函数。为简单起见,我使用函数 |x| + |y|
.
def density(x, y):
return np.abs(x) + np.abs(y)
现在让我们沿 x
和 y
维度定义点并填充数组。在下面的示例中,x
和 y
是存储 n_x
和 n_y
点的一维数组,每个点在 [-1, 1]
.
n_x = 100
n_y = 100
x = np.linspace(-1, 1, n_x)
y = np.linspace(-1, 1, n_y)
根据点对计算网格并计算网格中每个点的密度 D
。
xx, yy = np.meshgrid(x, y)
D = density(xx, yy)
请注意,您不需要显式迭代 meshgrid,您也可以对数组 xx
和 yy
使用看似标量的 density()
函数。有关 meshgrid
的详细信息,请参阅此 page。
接下来直接用pcolormesh()
显示或保存即可
plt.pcolormesh(x, y, D)
plt.title('Density function = |x| + |y|')
plt.savefig('density.png')
输出为: