使用Python计算数组中单个元素的平均值的成对元素

2024-05-05 21:10:31 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有一个查询;我正在访问一个提供以下响应的API:

[["22014",201939,"0021401229","APR 15 2015",Team1 vs. Team2","W", 19,4,10,0.4,2,4,0.5,0,0,0,2,2,4,7,5,0,2,1,10,14,1],["22014",201939,"0021401","APR 13 2015",Team1 vs. Team3","W", 15,4,13,0.4,2,8,0.5,0,0,0,2,2,4,7,5,0,8,1,12,14,1],["22014",201939,"0021401192","APR 11 2015",Team1 vs. Team4","W", 22,5,10,0.4,2,6,0.5,0,0,0,2,2,4,7,5,0,2,1,8,14,1]]

我可以很容易地将16个不同的变量赋值为零,然后像下面的例子一样打印出来:

sum_pts = 0

for n in range(0,len(shot_data)): #range of games; these lengths vary per player
       sum_pts= sum_pts+float(json.dumps(shots_array[n][24]))
print sum_pts/float(len(shots_array))

输出:

^{pr2}$

但是我不想创建16个不同的变量来计算这个列表中各个元素的平均值。我在找一个更简单的方法,我可以得到团队1的平均值

我希望它的输出最终是,这样我可以应用到无限数量的球员或个人统计:

Team1 AVGPTS AVGAST AVGSTL AVGREB...
      23.75  5.3    2.1    3.2

或者可以是:

  Player1 AVGPTS  AVGAST  AVGSTL AVGREB   ...
          23.75    5.3     2.1    3.2 ...

Tags: lenrangefloatarrayaprpts平均值vs
1条回答
网友
1楼 · 发布于 2024-05-05 21:10:31

要获得每个条目最后16个条目的平均值,可以使用以下方法,这样就避免了为每个列定义多个变量的需要:

data = [
    ["22014",201939,"0021401229","APR 15 2015", "Team1 vs. Team2","W", 19,4,10,0.4,2,4,0.5,0,0,0,2,2,4,7,5,0,2,1,10,14,1],
    ["22014",201939,"0021401","APR 13 2015","Team1 vs. Team3","W", 15,4,13,0.4,2,8,0.5,0,0,0,2,2,4,7,5,0,8,1,12,14,1],
    ["22014",201939,"0021401192","APR 11 2015","Team1 vs. Team4","W", 22,5,10,0.4,2,6,0.5,0,0,0,2,2,4,7,5,0,2,1,8,14,1]]

length = float(len(data))
values = []

for entry in data:
    values.append(entry[6:])

values = zip(*values)
averages = [sum(v) / length for v in values]

for col in averages:
    print "{:.2f} ".format(col),

这将显示:

^{pr2}$

请注意,您的数据在每个Team1 vs Team2之前缺少一个开头的引号。在

相关问题 更多 >