如何在python中合并来自两个矩形的网格网格点?

2024-10-01 00:16:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要合并两个不同(相邻)矩形形成的网格网格。以下是矩形的图示:

enter image description here

我可以创建单个矩形的网格网格。例如,对于绿色矩形,使用下面的代码片段,我们可以创建网格网格。在

xvalues = np.array([0, 2, 4, 6, 8, 10]) yvalues = np.array([6, 8, 10, 12]) x, y = np.meshgrid(xvalues, yvalues) positions = np.vstack([x.ravel(), y.ravel()]) theGridPoints = (np.array(positions)).T

我也可以为蓝色矩形创建网格点。但是,我无法将它们合并到一个对象中。我试图将它们合并为position1和{}的和。控制台上的值错误如下:

^{pr2}$

我该怎么解决呢?在

谢谢。在


Tags: 代码网格nparray蓝色矩形绿色positions
2条回答

如果要合并多个np.ndarray,则它们必须是相同的shape。所以蓝色矩形的xvalues个数需要等于绿色矩形的xvalues个数。对yvalues也是一样。 下面是一个简短的例子:

xvalues_b = np.array([0, 1, 2, 3, 4, 5])
yvalues_b = np.array([0, 1*5/3, 2*5/3, 3*5/3])
x_b, y_b = np.meshgrid(xvalues_b, yvalues_b)
positions_b = np.vstack([x_b.ravel(), y_b.ravel()])
theGridPoints_b = (np.array(positions_b)).T
positions_gb = np.concatenate([positions, positions_b])
import numpy as np
import matplotlib.pyplot as plt

bx, by = np.mgrid[0:2, 0:5]
gx, gy = np.mgrid[0:10, 5:12]

bp = np.vstack((bx.ravel(), by.ravel()))
gp = np.vstack((gx.ravel(), gy.ravel()))

points = np.hstack((bp, gp)).T

# full grid
plt.scatter(points[:,0], points[:,1], c='orange', s=200)
# green rectangle
plt.scatter(gp.T[:,0], gp.T[:,1], c='green', s=50)
# blue rectangle
plt.scatter(bp.T[:,0], bp.T[:,1], c='blue', s=50)

plt.show()

enter image description here

相关问题 更多 >