Arxci
Arxci

Reputation: 210

How would I find the sum of each individual list in my array?

What I'm trying to do is find the individual sum of each list in my array, then find the list that has the biggest sum.

I tried to use:

np.sum(list)

The problem with this is that it adds the sum of every list to get a grand total sum. For example:

[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
#np.sum() would return 78 because it calculates 10+26+42 = 78

This is what I would like to get though:

[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
#list1 = 10, list2 = 26, list3 = 42
#The list with the max value is list3 with 42

Here is my code:

#Sorry if this code is messy, I'm still new to this and it took me a few days to get here
#Basically this code takes a gird and finds the biggest area (i.e: width and height) of the grid

def FindAnswer(height, width, x, y, startx, starty):
  global origWidth, result

  #Find the values
  value = [row[startx:width] for row in plot[starty:height]]
  result.append(value)

  if width < x:
    #Raise the index im looking at and reset value
    startx += 1
    width += 1

    FindAnswer(height, width, x, y, startx, starty)

  elif height < y:
    #Reset width while going to a new row
    width = origWidth
    startx = 0

    #Go to a new row
    starty += 1
    height += 1

    FindAnswer(height, width, x, y, startx, starty)

plot = [[1, 2, 3, 4], 
     [5, 6, 7, 8], 
     [9, 10, 11, 12]]

result = []
#size of grid
x = 4 #amount of numbers in each list
y = 3 #number of rows

#Size of area I'm looking for
width = 1 #x >= width > 0
height = 2 #y >= height > 0
origWidth = width

startx = 0
starty = 0

FindAnswer(height, width, x, y, startx, starty)

print(result)

Upvotes: 2

Views: 69

Answers (3)

Parth S.
Parth S.

Reputation: 63

If you're allowed using numpy, then you can also do the following way:

ans = []
for lst in arr1:
    ans.append(np.sum(lst))
print(ans)

[10, 26, 42]

Upvotes: 1

U13-Forward
U13-Forward

Reputation: 71580

Try using:

np.sum(l, axis=1)

Or you @furas's answer, or use:

print(list(map(sum, l)))

Changed list to l since that is overriding the list keyword.

Upvotes: 3

furas
furas

Reputation: 142651

Using list comprehension you can calculate all values

data = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

new = [sum(x) for x in data]

print(new)

[10, 26, 42]

Upvotes: 2

Related Questions