The closest was this one summing columns.
So I'll do something similar in my question:
Say I've a Python 2D list as below:
my_list = [ [1,2,3,4],
[2,4,5,6] ]
I can get the row totals with a list comprehension:
row_totals = [ sum(x) for x in my_list ]
In one line, how can I sum the entire 2d-array?
27
You can do as easy as
sum(map(sum, my_list))
or alternatively
sum(sum(x) for x in my_list))
and call it a day, if you don't expect more than 2 dimensions. Note that the first solution is most likely not the fastest (as in execution time) solution, due to the usage of map()
. Benchmark and compare as necessary.
Finally, if you find yourself using multidimensional arrays, consider using NumPy and its superior array-friendly functions. Here's a short excerpt for your problem:
import numpy as np
my_list = np.array([[1,2,3,4], [2,4,5,6]])
np.sum(my_list)
This would work for any number of dimensions your arrays might have.
Another solution using itertools
:
>>> from itertools import chain
>>> my_list = [ [1,2,3,4], [2,4,5,6] ]
>>> sum(chain(*my_list))
27
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With