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

如何高效计算Numpy数组中连续元素对的平均值?

高效生成Numpy连续元素平均值数组

针对你的需求,完全不需要遍历,用Numpy的向量化操作就能高效实现,代码简洁且性能拉满:

方法一:切片直接计算(最简洁高效,针对相邻2元素场景)

利用切片提取数组的前n-1个元素和后n-1个元素,直接相加后取平均。这是Numpy中处理相邻元素平均最直接的方案,底层是优化过的C级运算,效率远高于Python遍历:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
avg_arr = (arr[:-1] + arr[1:]) / 2
print(avg_arr)  # 输出: [1.5 2.5 3.5 4.5]

这里arr[:-1]取数组除最后一个元素外的所有元素(即[1,2,3,4]),arr[1:]取数组除第一个元素外的所有元素(即[2,3,4,5]),两者逐元素相加后除以2,直接得到相邻元素的平均值数组。

方法二:滑动窗口(通用任意窗口大小)

如果以后需要计算连续k个元素的平均值(比如k=3),可以用np.lib.stride_tricks.sliding_window_view生成滑动窗口,再求均值,扩展性更强:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
# 生成大小为2的滑动窗口
windows = np.lib.stride_tricks.sliding_window_view(arr, window_size=2)
avg_arr = windows.mean(axis=1)
print(avg_arr)  # 输出: [1.5 2.5 3.5 4.5]

为什么重塑数组无效?

重塑只是改变数组的维度(比如把(5,)变成(1,5)或其他合法形状),但无法直接提取相邻的元素对。而切片或滑动窗口是从原数组中提取连续的子序列,这才是计算相邻元素平均的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:32:41