2017-05-28 7 views
0

Das sollte nicht so schwer sein. Angenommen, ich ein 2D-Array haben:Indizierung von Werten in einem 2D-Array in Python

a = [['1' 'George'] 
    ['5' ' '] 
    ['7' 'Jose'] 
    ['5' ' '] 
    ['7','Fred']] 

Ich wünsche allen zu finden, die indexierten Werte, bei denen a[:,1] == ' '

Meine beste Vermutung ist:

missing_vals = a[a[:,' ']==' ' 
a[missing_vals] 

Ich will nicht die Antwort:

['5','5'] 

aber die Antwort:

[1,4] 

Bedeutung der 2. und 5. Elemente des Arrays.

Danke.

Antwort

1

Dies ist, was Sie suchen:

>>> a = [['1', 'George'], 
...  ['5', ' '], 
...  ['7', 'Jose'], 
...  ['5', ' '], 
...  ['7','Fred']] 
>>> [i for i, [k,v] in enumerate(a) if v == ' '] 
[1, 3] 

Erläuterung:

Wir für all Indizes fragen i in Liste a bei dem das Element [k,v] in a das Element v gleich einen Raum hat .

+0

Es tut mir leid. Ich habe nicht angegeben. Was ich suche, ist die Position von diesen im Array? Ich suche nicht die Antwort ['5', '5'], sondern diese Antwort: [1,4]. Das heißt, wenn das Array bei 0 beginnt, die Positionen, für die die zweite Spalte a == ''. – Leigh

+0

Keine Sorgen! Ich habe die Antwort für dich neu geschrieben. –