我试图取数组中每两个值的平均值并将新数据存储在新数组中。
这是我所能得到的:
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/