python - 取数组中每2个数据点的平均值,创建一个新数组

标签 python arrays numpy

我试图取数组中每两个值的平均值并将新数据存储在新数组中。

这是我所能得到的:

y1 = np.array([1,2,3,4,5,6,7,8,9,10])

avgy = [0]*(len(y1)//2)

for i in range (0, len(y1)-1):
    if (2*(1+i)<=len(y1)):
        avgy[i] = ( y1[i+2[i]] + y1[2+2*i] )/2

print(avgy)

这是我收到的错误消息:

TypeError                                 Traceback (most recent call last)
<ipython-input-8-624d78987390> in <module>()
      9 for i in range (0, len(y1)-1):
     10     if (2*(1+i)<=len(y1)):
---> 11         avgy[i] = ( y1[i+2[i]] + y1[2+2*i] )/2
     12 
     13 print(avgy)

TypeError: 'int' object is not subscriptable

如果您能提供任何帮助,我将不胜感激。 奥利弗

最佳答案

y1 = np.array([1,2,3,4,5,6,7,8,9,10)]

avgy = ((y1 + np.roll(y1,1))/2.0)[1::2]

编辑:此方法的运行速度比使用 for 循环快约 20 倍,比使用 zip 和列表理解快约 90 倍。

关于python - 取数组中每2个数据点的平均值,创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55171596/

相关文章:

Java 和 Python 生成不同的 Hmac-SHA256 输出

python - 错误的文件描述符socket.accept

javascript - 我如何在 jquery 中创建一个数组?

python - numpy:在另一个表中查找所有出现的元素

python - 使用 serializers.ModelSerializer 进行过滤

python - 使用 numpy.round 时出现 `AttributeError: rint`

java - 如何在不指向 Java 源列表中的对象的情况下复制 ArrayList?

javascript - 如何最好地将复杂的 JavaScript 对象传递给 PHP?

python - Numpy 数组到 csv

python - 如何在 Python 中自动读取混合数据类型的文本文件?