【问题标题】:taking an average of every 3 points in an array and saving new values into a new array取数组中每 3 个点的平均值并将新值保存到新数组中
【发布时间】:2019-03-15 12:57:44
【问题描述】:

我试图取一个数组中每 3 个点的平均值,并将新值输出到一个新数组中。但是,我的代码中一定有问题,因为我不断收到相同的错误消息。

这是我的代码:

# y average values

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

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


# x average values

avgx = [0]*(len(x1)//3)

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

错误信息:

 File "<ipython-input-12-bebc7029e3d1>", line 16
    avgy[i] = ( y1[3*i+1] + y1[3*i+2] y1[3*i])/3
                                       ^
SyntaxError: invalid syntax

提前致谢, 奥利弗

【问题讨论】:

  • 您缺少加号 +。在 Python 中,数字不会仅仅靠彼此相邻而相加。 :P
  • 感谢您发现错字!
  • 那么,对于 [1,2,3,4,5,6] 你想要 [average([1,2,3]), average([4,5,6])]?
  • 不,我正在寻找:([1,2,3,4,5,6]) 每三个数据点的平均值,即 ([2,5])

标签: python arrays python-3.x loops for-loop


【解决方案1】:

在 y1[3*i])/3 和 x1[3*i])/3 之前缺少 +

# y average values

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

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


# x average values

avgx = [0]*(len(x1)//3)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2022-10-06
    • 2021-11-14
    相关资源
    最近更新 更多