Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python计算离散平均值_Python_Sum_Range - Fatal编程技术网

用python计算离散平均值

用python计算离散平均值,python,sum,range,Python,Sum,Range,我有一组数据点,我为它们制作了一个程序,可以查看数据集,从该数据集中每n个点取一个,求和,并将其放入一个新列表中。这样我就可以做一个简单的条形图 现在我想为我的新列表计算一个离散平均值 我使用的公式是:t_av=(1/nsmp)Sum[N_I*t_I,{I,N_l,N_}] 基本上,我有nsmp箱子,里面有N\u I编号,t\u I是箱子的时间,N\u l是第一个箱子,N\u是最后一个箱子 如果我的列表是这样的:[373156727,16], 我有5个箱子,我有:t_av=1/5(373*1+1

我有一组数据点,我为它们制作了一个程序,可以查看数据集,从该数据集中每n个点取一个,求和,并将其放入一个新列表中。这样我就可以做一个简单的条形图

现在我想为我的新列表计算一个离散平均值

我使用的公式是:
t_av=(1/nsmp)Sum[N_I*t_I,{I,N_l,N_}]

基本上,我有nsmp箱子,里面有
N\u I
编号,
t\u I
是箱子的时间,
N\u l
是第一个箱子,
N\u
是最后一个箱子

如果我的列表是这样的:
[373156727,16]

我有5个箱子,我有:
t_av=1/5(373*1+156*2+73*3+27*4+16*5)=218.4

现在我遇到了一个问题。我试过这个:

for i in range(0,len(L)):
    sr_vr = L[i]*i

tsr=sr_vr/nsmp
其中nsmp是我可以设置的箱子数量,我已经计算了
L
。由于范围将从0,1,2,3,4开始,我无法得到正确的答案,因为我的第一个bin是由0计算的。如果我说
range(1,len(L)+1)
我会得到
索引器:列表索引超出范围
,因为这会弄乱
L[I]*I
部分,因为他仍然会将列表的第二(1)个元素乘以1,然后他将比最后一部分少一个条目


如何更正此问题?

您可以使用
L[I]*(I+1)
(假设您坚持使用基于零的索引)

但是,您也可以使用将索引和值循环在一起,甚至可以提供
1
作为第二个参数,以便索引从
1
开始,而不是从
0
开始

下面是我写这篇文章的方式:

tsr = sum(x * i for i, x in enumerate(L, 1)) / len(L)

请注意,如果您在Python2.x上并且
L
完全包含整数,那么这将执行整数除法。要获得浮点值,只需将其中一个参数转换为浮点值(例如
float(len(L))
)。您也可以使用来自未来导入部门的

您的第二个版本有效,而L[i]*(i+1)给出了错误的答案。我不会想到第二种方法,它非常有效。我会在8分钟内接受它:顺便说一句,我仍然不明白为什么这个简单的循环不能正常工作:\EDIT:我有来自uuu future_uuu部分的
)当你想保留一个运行总数时,你在每次迭代中都重新分配一个新值到
sr\u vr
。因此,您可以在循环之前放置
sr\u vr=0
,然后在循环内部使用
sr\u vr+=L[i]*(i+1)