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

如何获取Python矩阵中指定元素的所有邻域值?

获取矩阵任意元素的邻域值(通用方案)

嘿,我完全懂你不想用一堆繁琐的条件判断来处理边界情况的烦恼——那种写法不仅代码冗余,后期维护也麻烦。这里有个更灵活、通用的方法,能轻松获取任意矩阵元素的所有邻域值:

核心思路

不用逐个判断元素是在角落、边缘还是中间,而是先定义所有可能的邻域偏移方向,再过滤掉那些超出矩阵范围的无效坐标,最后收集有效坐标对应的元素值即可。

代码实现

def get_neighbors(matrix, i, j):
    rows = len(matrix)
    cols = len(matrix[0]) if rows > 0 else 0
    # 定义8个可能的邻域偏移方向(上下左右+四个对角线)
    offsets = [(-1, -1), (-1, 0), (-1, 1),
               (0, -1),          (0, 1),
               (1, -1),  (1, 0), (1, 1)]
    neighbors = []
    for dx, dy in offsets:
        x = i + dx
        y = j + dy
        # 检查坐标是否在矩阵范围内
        if 0 <= x < rows and 0 <= y < cols:
            neighbors.append(matrix[x][y])
    return neighbors

测试验证

用你给出的例子来测试(假设矩阵如下,匹配你描述的邻域结果):

matrix = [
    [1, 2, 3],
    [5, 6, 7],
    [4, 8, 9]
]

# 获取matrix[0][0]的邻域
print(get_neighbors(matrix, 0, 0))  # 输出: [2,5,6],和你描述一致
# 获取matrix[0][1]的邻域
print(get_neighbors(matrix, 0, 1))  # 输出: [1,3,5,6,7],符合预期
# 获取matrix[0][2]的邻域
print(get_neighbors(matrix, 0, 2))  # 输出: [2,6,7](若你的矩阵结构不同,调整后即可得到你提到的[2,4,6,7,8])

为什么这个方案更好

  • 通用性强:不管元素在矩阵的哪个位置(角落、边缘、中间),都能自动处理,不用额外写条件分支
  • 易维护:如果后续需要调整邻域范围(比如只需要上下左右,不需要对角线),只要修改offsets列表就行
  • 适配任意大小矩阵:不管矩阵是2x2还是100x100,代码都能正常工作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:50:25