繁体   English   中英

使用网格上的坐标点值创建2D数组

[英]Creating a 2D array using values of coordinate points on a grid

假设我有一个坐标网格,其中散布了一些点(质量)。 我可以使用以下方法创建它:

import numpy as np
import matplotlib.pyplot as plt 

points = np.array([[0,1],[2,1],[3,5]]) # array containing the coordinates of masses(points) in the form [x,y]

x1, y1 = zip(*points)

现在,我可以使用绘制:

plt.plot(x1,y1,'.')

点图

现在,说我使用以下方法创建2D网格:

x = np.linspace(-10,10,10)
y = np.linspace(-10,10,10)
X,Y = np.meshgrid(x,y)

现在,我要做的是创建一个二维数组“ Z”(质量图),该数组在数组中的位置处包含质量。 当我指大众时,我只不过是在这些点上标量。 所以我可以做类似plt.contourf(X,Y,Z)的事情。 我遇到的问题是Z的索引不能与点的坐标相同。 必须进行某种我无法弄清楚的转换。 另一种查看方式是我想要:

Z[X,Y] = 1

我希望Z在数组指定的位置具有1。 因此,问题的实质是如何计算X和Y索引,使其与实坐标中的x1,y1相对应。

例如,如果我简单地做Z [x1(i),y1(i)] = 1,contourf给出以下结果:相反,我希望峰值位于(0,1),(2,1),(3,5 )。 在此处输入图片说明

要在x1,y1指定的坐标处有1,在其他任何地方都为零,我会这样写:

x = np.linspace(-10, 10, 21)
y = np.linspace(-10, 10, 21)
Z = np.zeros((len(y), len(x)))
for i in range(len(x1)):
    Z[10 + y1[i], 10 + x1[i]] = 1

然后,您应该可以编写plt.contourf(x, y, Z)

告诉我是否能给您所需的结果。

暂无
暂无

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

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