如何在最简洁的python中总结一个多维数组?

时间:2012-02-29 10:21:09

标签: python multidimensional-array sum

最接近的是summing columns

所以我会在我的问题中做类似的事情:

说我有一个Python 2D列表如下:

my_list =  [ [1,2,3,4],
             [2,4,5,6] ]

我可以使用列表解析来获得行总数:

row_totals = [ sum(x) for x in my_list ]

在一行中,我如何总结整个2d阵列?

27

5 个答案:

答案 0 :(得分:11)

您可以轻松完成

sum(map(sum, my_list))

或者

sum(sum(x) for x in my_list))

并且如果您不期望超过2个维度,请将其称为一天。请注意,由于map()的使用,第一种解决方案很可能不是最快的(如在执行时间内)解决方案。根据需要进行基准测试和比较。

最后,如果您发现自己使用的是多维数组,请考虑使用NumPy及其优秀的数组友好函数。以下是您的问题的简短摘录:

import numpy as np

my_list = np.array([[1,2,3,4], [2,4,5,6]])
np.sum(my_list)

这适用于您的阵列可能具有的任意数量的维度。

答案 1 :(得分:3)

>>> sum ( [ sum(x) for x in [[1,2,3,4], [2,4,5,6]] ] )
27

答案 2 :(得分:3)

使用itertools的另一种解决方案:

>>> from itertools import chain
>>> my_list = [ [1,2,3,4], [2,4,5,6] ]
>>> sum(chain(*my_list))
27

答案 3 :(得分:1)

>>> from itertools import chain
>>> my_list = [[1,2,3,4], [2,4,5,6]]
>>> sum(chain.from_iterable(my_list))
27

答案 4 :(得分:0)

您可以使用sum首先将内部列表添加到一起,然后对得到的展平列表求和:

>>> my_list = [ [1,2,3,4], [2,4,5,6] ]

>>> sum(my_list, [])
[1, 2, 3, 4, 2, 4, 5, 6]

>>> sum(sum(my_list, []))
27