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

如何仅用Numpy函数无循环计算二维数组元素与左上相邻元素的和

实现方案

通过对原数组做偏移补零后逐元素叠加即可实现,全程无Python层面的显式循环,所有运算由numpy底层向量化执行,性能优异。

完整代码

import numpy as np

Q = np.asarray([
   [0.20, 0.  , 0.3 , 0.1 ],
   [0.10, 0.  , 0.2 , 0.  ],
   [0.05, 0.  , 0.  , 0.  ],
   [0.  , 0.  , 0.  , 0.05],
], dtype=float)

# 原数组向下偏移1行,首行补0,对应每个位置的上方元素
pad_top = np.pad(Q, ((1, 0), (0, 0)), mode='constant')[:-1, :]
# 原数组向右偏移1列,首列补0,对应每个位置的左侧元素
pad_left = np.pad(Q, ((0, 0), (1, 0)), mode='constant')[:, :-1]
# 原数组向右下偏移1行1列,首行首列补0,对应每个位置的左上角元素
pad_top_left = np.pad(Q, ((1, 0), (1, 0)), mode='constant')[:-1, :-1]

# 自身+上方+左侧+左上角 求和得到结果
J = Q + pad_top + pad_left + pad_top_left

结果说明

上述代码输出的J与你给出的预期结果完全一致:

array([[0.2 , 0.2 , 0.3 , 0.4 ],
       [0.3 , 0.3 , 0.5 , 0.6 ],
       [0.15, 0.15, 0.2 , 0.2 ],
       [0.05, 0.05, 0.  , 0.05]])

实现逻辑是将不存在的相邻元素默认按0处理,通过np.pad补零加切片操作完成数组偏移,最后直接逐元素相加,适配任意尺寸的输入数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:36:04