繁体   English   中英

如何迭代 MeshGrid?

[英]How can I iterate over a MeshGrid?

我有一个 function 返回点 (x, y) 的密度估计。 我想遍历给定二维网格的所有 (x, y) 点,并让密度 function 计算每个点的估计值,以便我可以有一个密度值矩阵,然后我可以使用 plot。

假设 function 被称为density(x, y) ,它采用任意点 (x, y) 并返回该 (x, y) 的密度估计 (z)。 我希望能够将 function 应用于二维网格中的每个点并存储密度估计值,其中我可以使用plt.pcolormesh()来查看密度。

我怎样才能做到这一点?

我想你想要一些关于这个的东西。

首先,定义密度 function。 为简单起见,我采用 function |x| + |y| |x| + |y| .

def density(x, y):
    return np.abs(x) + np.abs(y)

现在让我们定义沿xy维度的点并填充 arrays。 在以下示例中, xy是 1D arrays ,它们存储n_xn_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)

请注意,您不需要显式迭代网格网格,您也可以对 arrays xxyy使用看似标量的density() function。 有关meshgrid的详细信息,请参阅此页面

接下来只需使用pcolormesh()来显示或保存。

plt.pcolormesh(x, y, D)
plt.title('Density function = |x| + |y|')
plt.savefig('density.png')

output 是:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM