[英]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.