Reputation: 210
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
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
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
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