使用循环平均列表中的每2个值

2024-06-16 11:02:22 发布

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

我有一个关于如何在python中获得列表中每2个元素的平均值的问题。 例如:

a = [1, 3, 4, 1, 5, 2]

在这种情况下,因为它需要计算(1+4+5)/3和下一个(3+1+2)/3。新列表将具有以下值:

amean = [3.3333,2]

到目前为止,我已经设法平均,但我不知道如何创建一个循环,让它返回并开始对第二个元素(3+1+2)/3进行平均。你知道吗

以下是我迄今为止所做的一件事:

import numpy as np

a = [1.,3.,4.,1., 5., 2.]

def altElement(my_list):
    b = my_list[:len(my_list):2]
    print b
    return np.mean(b)

print altElement(a)

有人知道如何创建这个循环吗? 以下是我迄今为止完成的代码链接: code


Tags: importnumpy元素列表mydefasnp
3条回答

如果您想要纯Python而不是Numpy:

mean = [sum(a[i::2]) / len(a[i::2]) for i in xrange(2)]

您可能还需要添加from __future__ import divisionmap(float, a)以避免舍入。你知道吗

import numpy as np
a = np.asarray([1, 3, 4, 1, 5, 2])

print( a[::2].mean() )        #All Odd Elements
print( a[1::2].mean() )       #All Even Elements

输出:

3.33333333333
2.0

根据评论编辑(每24个元素)

import numpy as np
a = range(1, 73)

for i in map(None,*[iter(a)]*24):
    print( np.array(i).mean() )

输出:

12.5
36.5
60.5

my_list[1::2].mean()将为您提供另一个元素。你知道吗

相关问题 更多 >