获取numpy数组连续对之间的平均值

tyg4sfes  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(94)

假设我有一个这样的numpy数组
[1,2,3,4,5]
我想生成一个数组,它等于连续元素的平均值
[1.5,2.5,3.5,4.5]
除了迭代之外,还有什么有效的方法可以做到这一点吗?
我真的不知道该怎么做,因为整形实际上不起作用,我试图得到一个更小的数组。

jdg4fx2g

jdg4fx2g1#

您可以使用np.convolve来实现两元素平均,作为具有向量[0.5, 0.5]的输入向量的convolution

>>> a = [1, 2, 3, 4, 5]
>>> np.convolve(a, [0.5, 0.5], "valid")
array([1.5, 2.5, 3.5, 4.5])

np.convolve是一个高度优化的例程,它会根据它对给定输入的估计最快而委托给不同的实现。对于像[0.5, 0.5]这样的小向量,它可能只会直接计算结果(每个元素都是0.5*a[n] + 0.5*[n+1]),但对于大输入,它可以利用基于FFT的卷积算法来计算结果,运算量明显少于直接方法。

相关问题