如何用Python/Numpy快速便捷计算数组相邻元素的中间值?
用Numpy快速计算数组相邻元素的中间值
针对你的需求,有几种简洁高效的Numpy实现方法:
方法一:切片算术运算(最直观)
这是最直接的方式,利用Numpy的矢量化操作对数组切片后计算平均值:
import numpy as np x = np.array([1, 2, 3, 4, 5]) x_interp = (x[1:] + x[:-1]) / 2 # 输出:array([1.5, 2.5, 3.5, 4.5])
原理:x[1:]取数组从第二个元素到末尾的部分,x[:-1]取数组从开头到倒数第二个元素的部分,两者对应元素相加后除以2,直接得到相邻元素的中间值。
方法二:使用np.convolve
通过卷积操作实现滑动平均,也能得到相同结果:
import numpy as np x = np.array([1, 2, 3, 4, 5]) x_interp = np.convolve(x, [0.5, 0.5], mode='valid') # 输出:array([1.5, 2.5, 3.5, 4.5])
mode='valid'确保只保留两个元素重叠计算的结果,刚好对应相邻元素的中间值。
方法对比
- 切片算术运算的代码可读性最高,执行效率也最优(纯矢量化操作,无额外函数调用开销),适合绝大多数场景。
- 卷积方法更适合需要扩展到更复杂滑动窗口计算的场景,但针对这个需求稍显冗余。
内容的提问来源于stack exchange,提问作者DLWHI
相关产品推荐
相关产品推荐

