pythonarraysnumpy

# Addition of multiple arrays in python

I have a number of arrays that I wish to broadcast into a single array using addition, which I know can be simply done such that:

``````a = numpy.array([1,2,3])
b = numpy.array9[4,5,6])
sum = a + b
print(sum)

[5,7,9]
``````

However, I can't hardcode it like in this simple example as I will run my script numerous times with a different number of inputs and so will have a different number of arrays each time. Sometimes, I may have a and b, but other times I may have a, c and d but not b etc.

Using a loop I therefore append the arrays I do have into a list, so that I end up with something like:

``````newlist = [array([1,2,3,...5,4,3]),
array([5,7,2,...4,6,7]),
array([3,6,2,...4,5,9])]
``````

What would be the most pythonic way of getting a single array from the arrays in 'newlist' which is the addition of the arrays within it, such that (from newlist):

``````sum = [8,15,7,...14,15,19]
``````

The arrays are all the same shape.

Solution

• Stick with Numpy array and use its `sum()` method:

``````>>> arr = np.array([[1,2,3,5,4,3],
[5,7,2,4,6,7],
[3,6,2,4,5,9]])
>>> arr.sum(axis=0)
array([ 9, 15,  7, 13, 15, 19])
``````

Of course you can do it with Python lists as well but it is going to be slow:

``````>>> lst = [[1,2,3,5,4,3],
[5,7,2,4,6,7],
[3,6,2,4,5,9]]
>>> map(sum, zip(*lst))
[9, 15, 7, 13, 15, 19]
``````