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

使用NumPy实现数组元素上下左右数值求和的向量化方法

NumPy向量化实现中间区域元素替换

先初始化目标数组:

import numpy as np

# 创建示例数组
arr = np.array([
    [100., 100., 100., 100., 100.],
    [100.,   0.,   0.,   0., 100.],
    [100.,   0.,   0.,   0., 100.],
    [100.,   0.,   0.,   0., 100.],
    [100., 100., 100., 100., 100.]
])

利用NumPy的切片特性直接实现向量化计算,无需循环:

# 定位中间3×3区域
middle = arr[1:4, 1:4]

# 分别取上下左右四个方向的对应区域切片
top = arr[0:3, 1:4]    # 中间区域每个元素的上方值
bottom = arr[2:5, 1:4] # 中间区域每个元素的下方值
left = arr[1:4, 0:3]   # 中间区域每个元素的左方值
right = arr[1:4, 2:5]  # 中间区域每个元素的右方值

# 替换中间区域为四个方向值的和
middle[:] = top + bottom + left + right

执行后数组变为:

[[100. 100. 100. 100. 100.]
 [100. 200. 200. 200. 100.]
 [100. 200. 200. 200. 100.]
 [100. 200. 200. 200. 100.]
 [100. 100. 100. 100. 100.]]

原理说明

  • 切片arr[1:4,1:4]精准定位中间3×3的零值区域,NumPy切片是原数组的视图,直接赋值会修改原数组
  • 上下左右的切片维度都和中间区域一致(3×3),对应位置元素一一匹配,直接相加就是每个元素四个方向的和,完全符合向量化操作的要求

内容的提问来源于stack exchange,提问作者jianmin-chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:02:53