python:如何从列表的列表中获取除特定值之外的所有值,然后获取每列的平均值?

时间:2017-10-24 19:52:49

标签: python

如果有人能帮助我获得不包括数字6的每列的平均值,我将不胜感激。所以在下面的例子中,我应该得到[2,6,4.5] 因为对于第1列,当我排除6时,mean只是(2/1)= 2 对于第二列,((3 + 9)/ 2)= 6,对于第3列,((4 + 5)/ 2)= 4.5

以下是我的代码,以获取每列的均值,但不排除6

def mean(x):
    return sum(x) / float(len(x))


x = [[2,3,4],[6,9,5]] 
b = map(mean, zip(*x))
print (b)

2 个答案:

答案 0 :(得分:0)

只需使用x_t = zip(*x)转置惯用法,然后过滤并映射,使用列表理解来完成转置:

>>> [mean([i for i in sub if i !=6]) for sub in zip(*x)]
[2.0, 6.0, 4.5]

答案 1 :(得分:0)

map(lambda b:sum(b)/float(len(b)), map(lambda y:filter(lambda a:a!=6, y), zip(*x)))