2016-06-29 9 views
0

Angenommen ich ein Array wie diese haben:Wie indexiert man ein numpy Array mit Bedingungen?

a = np.array([[2,1], 
       [4,2], 
       [1,3],...] 

Ich will die Elemente der zweiten Spalte abzurufen, wo die entsprechenden Elemente in der ersten Spalte eine Bedingung entsprechen. So etwas wie

a[a[:,0] == np.array([2,4]),1] (?) 

np.array([1,2]) 

Antwort

0

geben sollte Während diese list nutzt Ergebnisse zu sammeln und erfordert eine for Schleife sammelt diese die zweite Spaltenwerte, sobald die erste Spalte einige Kriterien bestanden hat (in einem list akzeptabler Ergebnisse in diesem Fall).

a = np.array([[2, 1], 
       [4, 2], 
       [1, 3]]) 
b = [] 
criteria = [2, 4] 

for entry in a: 
    if entry[0] in criteria: 
     b.append(entry[1]) 

b = np.array(b) 
0

Sie können eine Maske basierend auf Ihrer ersten Spalte erstellen und diese dann zum Maskieren der zweiten Spalte verwenden.

import numpy as np 

a = np.array([[2, 1], 
       [4, 2], 
       [1, 3]]) 

mask = np.logical_or(a[:,0] == 2, a[:,0] == 4) 

b = a[:,1][mask] 

print(b) 

Returns:

[1, 2] 

Es könnte ein wenig ungeschickt, wenn man viele Werte, die Sie vergleichen wollen haben.