簡體   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