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

问题描述 投票:0回答:2

假设我有一个像这样的 numpy 数组

[1,2,3,4,5]

我想生成一个等于连续元素平均值的数组

[1.5,2.5,3.5,4.5]

除了迭代之外,还有什么有效的方法可以做到这一点吗?

我不太确定该怎么做,因为重塑实际上不起作用,我正在尝试获得更小的阵列。

python numpy numpy-ndarray
2个回答
1
投票

在下面的代码中使用 NumPy 的向量化运算(用于执行数学运算的高度优化函数)。

arr[:-1]
包含除 arr 的最后一个元素之外的所有元素
arr[1:]
包含除 arr

的第一个元素之外的所有元素
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
avg_arr = (arr[:-1] + arr[1:]) / 2.0

print(avg_arr)

1
投票

您可以使用

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])
© www.soinside.com 2019 - 2024. All rights reserved.