You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中合并两个相邻矩形的网格点?

解决两个矩形网格点合并的问题

嘿,我明白你遇到的麻烦了!用+号去合并两个网格点数组肯定会报错,因为+是元素级别的加法运算,它要求两个数组的形状完全一致才能对应位置相加,但你的两个矩形网格点数量不一样(行数不同),numpy的广播机制没法处理这种情况,所以才会抛出ValueError。

正确的做法是用数组拼接函数,把两个网格点数组按行合并(因为每个网格点是一行二维坐标),下面是具体的实现步骤:

1. 分别生成两个矩形的网格点

先确保你已经正确生成了绿色和蓝色矩形的网格点数组(比如分别命名为theGridPoints_green和theGridPoints_blue):

import numpy as np

# 绿色矩形网格点(你的原代码)
xvalues_green = np.array([0, 2, 4, 6, 8, 10])
yvalues_green = np.array([6, 8, 10, 12])
x_green, y_green = np.meshgrid(xvalues_green, yvalues_green)
positions_green = np.vstack([x_green.ravel(), y_green.ravel()])
theGridPoints_green = positions_green.T

# 蓝色矩形网格点(示例,根据你的实际坐标调整)
xvalues_blue = np.array([0, 2, 4, 6, 8, 10])
yvalues_blue = np.array([0, 2, 4, 6])
x_blue, y_blue = np.meshgrid(xvalues_blue, yvalues_blue)
positions_blue = np.vstack([x_blue.ravel(), y_blue.ravel()])
theGridPoints_blue = positions_blue.T

2. 拼接两个网格点数组

用np.concatenate或者np.vstack来完成合并,这两个函数都能把多个数组按指定轴拼接:

# 方法1:用concatenate,指定axis=0按行拼接
combined_grid = np.concatenate([theGridPoints_green, theGridPoints_blue], axis=0)

# 方法2:用vstack(等价于axis=0的concatenate)
combined_grid = np.vstack([theGridPoints_green, theGridPoints_blue])

3. 可选:去除重复点

如果两个矩形相邻的边界上有重复的网格点(比如绿色矩形的y=6和蓝色矩形的y=6是同一条边),可以用np.unique去重:

# 按行去重,keep='first'保留第一次出现的点
combined_grid_unique = np.unique(combined_grid, axis=0, keep='first')

这样就能得到包含两个矩形所有网格点的数组啦!

内容的提问来源于stack exchange,提问作者santobedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:37:51