如果有人能帮助我获得不包括数字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)
答案 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)))