Search code examples
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]