多维数组中的地图求和项

时间:2012-01-11 21:52:29

标签: python

我有一个大致如下的数组:

[ (0.5, 0.6, 0.7), (0.1, 0.9, 0.8), (0.9, 1.0, 0.4),
  ...
  (0.3, 0.8, 0.3), (0.2, 0.4, 0.9), (0.5, 0.5, 0.3) ]

我需要的是[0] [0],[0] [1],[0] [2]等的总和,以及[1] [0],[1] [1], [1] [2]等我需要一种方法来获得数组中所有项的第一个索引的总和,然后是数组中所有项的第二个索引的总和,等等。

我怎样才能在Python中执行此操作?最终的结果是有一个单元组,其中包含所有元组的每个索引的平均值。

5 个答案:

答案 0 :(得分:1)

这适用于任意大小的元组:

result = reduce(lambda x, y: tuple((xi + yi) for (xi, yi) in zip (x, y)), l)

l是元组列表。当然,这只是总结一切,不计算平均值。

你没有用NumPy这样做的原因。它会简化(并加速)事情。

答案 1 :(得分:1)

>>> c=[ (0.5, 0.6, 0.7), (0.1, 0.9, 0.8), (0.9, 1.0, 0.4),(0.5, 0.6, 0.7), (0.1, 0.9, 0.8), (0.9, 1.0, 0.4),(0.5, 0.6, 0.7), (0.1, 0.9, 0.8), (0.9, 1.0, 0.4)]
>>> [ sum([t[i] for t in c]) for i in range(len(c[0]))]
[4.5, 7.5, 5.6999999999999993]

这假设所有元组都有许多元素作为你的第一个元组

答案 2 :(得分:0)

python 2.6.x

>>> reduce(lambda x, y: (x[0]+y[0], x[1]+y[1], x[2]+y[2]), [(1, 2, 3), (2, 3, 4), (4, 5, 6)])
(7, 10, 13)

答案 3 :(得分:0)

tuple(a.sum(axis=0))
如果a是数组

答案 4 :(得分:0)

尝试以下方法:

values = [(1,2,3), (4,5,6)]
print map(sum, values)