多个列表中每个元素的平均值 - Python

时间:2017-04-16 10:07:07

标签: python python-2.7

如果我有两个列表

a = [2,5,1,9]
b = [4,9,5,10]

如何找到每个元素的平均值,以便结果列表为:

[3,7,3,9.5]

4 个答案:

答案 0 :(得分:7)

>>> a = [2,5,1,9]
>>> b = [4,9,5,10]
>>> [(g + h) / 2 for g, h in zip(a, b)]
[3.0, 7.0, 3.0, 9.5]

答案 1 :(得分:1)

参考问题的标题,您可以轻松地通过以下方式实现此目标:

import numpy as np

multiple_lists = [[2,5,1,9], [4,9,5,10]]
arrays = [np.array(x) for x in multiple_lists]
[np.mean(k) for k in zip(*arrays)]

以上脚本将处理多个列表,而不仅仅是两个。如果要比较两种方法的性能,请尝试:

%%time
import random
import statistics

random.seed(33)
multiple_list = []
for seed in random.sample(range(100), 100):
    random.seed(seed)
    multiple_list.append(random.sample(range(100), 100))

result = [statistics.mean(k) for k in zip(*multiple_list)]

或者:

%%time
import random
import numpy as np

random.seed(33)
multiple_list = []
for seed in random.sample(range(100), 100):
    random.seed(seed)
    multiple_list.append(np.array(random.sample(range(100), 100)))

result = [np.mean(k) for k in zip(*multiple_list)]

以我的经验,numpy方法要快得多。

答案 2 :(得分:0)

你想要的是两个数组(或数学中的向量)的平均值。

从Python 3.4开始,有一个statistics模块提供mean()函数:

  

statistics.mean(数据)

     

返回数据的样本算术平均值,实数值的序列或迭代器。

你可以像这样使用它:

import statistics

a = [2, 5, 1, 9]
b = [4, 9, 5, 10]

result = [statistics.mean(k) for k in zip(a, b)]
# -> [3.0, 7.0, 3.0, 9.5]

通知:此解决方案可用于两个以上的数组,因为zip()可以有多个参数。

答案 3 :(得分:0)

使用list和for循环的替代方法是使用numpy数组。

tS