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

无需循环实现NumPy矩阵行内滑动三元素累加计算

无循环实现NumPy矩阵滑动三元素求和(保留首尾)

给定原矩阵:

import numpy as np

B = np.array([[1, 1, 2, 3, 3],
              [4, 4, 5, 6, 6],
              [7, 7, 8, 9, 9]])

期望得到的结果矩阵:

result = np.array([[1, 4, 6, 8, 3],
                   [4, 13, 15, 17, 6],
                   [7, 22, 24, 26, 9]])

需求说明:保留每行首尾元素,中间每个元素为原矩阵对应位置相邻三个元素的和(即result[i,j] = B[i,j-1] + B[i,j] + B[i,j+1],其中1<=j<=3)。

无循环优化实现方案

直接利用NumPy的向量化切片操作,完全避免循环,代码简洁且高效:

# 初始化结果矩阵,复制原矩阵的所有元素
result = B.copy()
# 计算中间列的滑动三元素和:将原矩阵的三列切片相加
result[:, 1:-1] = B[:, :-2] + B[:, 1:-1] + B[:, 2:]

原理说明

  • B[:, :-2]:取原矩阵所有行,列范围是从第0列到倒数第3列(即列索引0、1、2)
  • B[:, 1:-1]:取原矩阵所有行,列范围是从第1列到倒数第2列(即列索引1、2、3)
  • B[:, 2:]:取原矩阵所有行,列范围是从第2列到最后一列(即列索引2、3、4)
  • 这三个数组相加后,刚好对应结果矩阵中间列(列索引1、2、3)的每个元素,即原矩阵对应位置相邻三个元素的和。

这种方法完全依赖NumPy的底层向量化运算,比循环实现的效率高得多,尤其适合处理大规模矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:57:47