如何根据数组中的元素对python多维数组中的值求和?

时间:2017-11-23 09:09:35

标签: python list

假设我有array名为my array

my_array= [[1,2],[1,3],[2,3]]

我想添加从1开始的每个子列表中的所有第二个元素,以便我的输出为5

同样使用NumPy不是一个选择......

有谁知道怎么做?

6 个答案:

答案 0 :(得分:5)

您可以使用条件列表推导。

my_array=[[1,2],[1,3],[2,3]]
my_sum=sum(v[1] for v in my_array if v[0]==1)

print(my_sum)

输出:

5

答案 1 :(得分:3)

使用带有过滤器的列表推导来选择项目,然后将它们相加:

result = sum([b for a,b in my_array if a == 1])

答案 2 :(得分:1)

您可以遍历数组并检查第一个元素是否为1,然后将第二个元素添加到变量中:

result = 0
for i in range(0, len(my_array)):
    elem = my_array[i]
    if elem[0] == 1:
        result += elem[1]

答案 3 :(得分:0)

my_array= [[1,2],[1,3],[2,3]]
sum = 0
for x in my_array:
    if x[0] == 1:
        sum+=x[1]

print(sum)

答案 4 :(得分:0)

OP不能使用numpy,但对于问题的未来读者来说,这不一定是真的。由于我们已经涵盖了非numpy解决方案,所以这里有一个numpy。

>>> import numpy as np
>>> my_array = np.array([[1,2],[1,3],[2,3]])
>>>
>>> np.sum(my_array[:,1][my_array[:,0] == 1])
5

答案 5 :(得分:0)

对于大数据,从一开始就使用numpy进行转换甚至更好可能会更快。这里,如果要添加to_sum中的相应元素,则to_select为真:

ReceiverRestrictedContext