【问题标题】:How would I find the sum of each individual list in my array?如何找到数组中每个单独列表的总和?
【发布时间】:2020-05-26 09:14:58
【问题描述】:

我要做的是找到数组中每个列表的单独总和,然后找到总和最大的列表。

我尝试使用:

np.sum(list)

这样做的问题是,它将每个列表的总和相加得到总和。例如:

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

这是我想要得到的:

[[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

这是我的代码:

#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)

【问题讨论】:

    标签: python arrays python-3.x list


    【解决方案1】:

    尝试使用:

    np.sum(l, axis=1)
    

    或者你@furas的回答,或者使用:

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

    list 更改为l,因为它覆盖了list 关键字。

    【讨论】:

      【解决方案2】:

      使用列表推导可以计算所有值

      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]
      

      【讨论】:

        【解决方案3】:

        如果你被允许使用numpy,那么你也可以这样做:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 1970-01-01
          • 2020-06-24
          • 2016-07-07
          • 1970-01-01
          相关资源
          最近更新 更多