Issue
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]
Answered By - Ashwini Chaudhary
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.