假设我有一个这样的numpy数组[1,2,3,4,5]我想生成一个数组,它等于连续元素的平均值[1.5,2.5,3.5,4.5]除了迭代之外,还有什么有效的方法可以做到这一点吗?我真的不知道该怎么做,因为整形实际上不起作用,我试图得到一个更小的数组。
[1,2,3,4,5]
[1.5,2.5,3.5,4.5]
jdg4fx2g1#
您可以使用np.convolve来实现两元素平均,作为具有向量[0.5, 0.5]的输入向量的convolution:
np.convolve
[0.5, 0.5]
>>> 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的卷积算法来计算结果,运算量明显少于直接方法。
0.5*a[n] + 0.5*[n+1]
1条答案
按热度按时间jdg4fx2g1#
您可以使用
np.convolve
来实现两元素平均,作为具有向量[0.5, 0.5]
的输入向量的convolution:np.convolve
是一个高度优化的例程,它会根据它对给定输入的估计最快而委托给不同的实现。对于像[0.5, 0.5]
这样的小向量,它可能只会直接计算结果(每个元素都是0.5*a[n] + 0.5*[n+1]
),但对于大输入,它可以利用基于FFT的卷积算法来计算结果,运算量明显少于直接方法。