2017-11-23 2 views

Antwort

5

Sie können eine bedingte Liste Verständnis für diese.

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) 

Ausgang:

5 
1

können Sie Schleife über die Felder und prüfen, ob das erste Element 1, dann auf eine Variable das zweite Element hinzufügen:

result = 0 
for i in range(0, len(my_array)): 
    elem = my_array[i] 
    if elem[0] == 1: 
     result += elem[1] 
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) 
3

Verwenden Sie eine Liste Verständnis mit einem Filter die Elemente auszuwählen und sie dann zusammenfassen:

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

OP nicht numpy verwenden kann, aber das bedeutet nicht müssen für zukünftige Leser der Frage wahr sein. Da wir bereits die nicht-numpy Lösungen abgedeckt haben, hier ist eine mit 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 
0

Bei großen Datenmengen kann die Konvertierung in oder sogar besser mit numpy von Anfang an schneller sein. Hier ist to_select der Wert true, wenn das entsprechende Element in to_sum hinzugefügt werden soll:

my_array = numpy.array(my_array) 
to select = my_array[:,0] == 1 
to_add = my_array[:,1] 
result = numpy.sum(to_add[to_select]) 
Verwandte Themen