2016-07-02 12 views
-1

Ich habe ein sehr großes numpy Array in Python voller meteorologischer Daten. Um fehlerhafte Daten zu beobachten, möchte ich jeden Wert betrachten und testen, ob er kleiner als -1 ist. Schließlich möchte ich dies mit einem logischen Array von Nullen und Einsen darstellen, wobei 1 Indizes darstellt, bei denen der Wert kleiner als -1 ist, und Nullen, die alle anderen repräsentieren. Ich habe versucht, die numpy.where Funtion Verwendung alsLogisches Array aus numpy Array erstellen

logarr = np.where(metdat < -1) 

folgt, die die ursprüngliche Anordnung zurückgibt und die Reihe von Nullen für, wenn diese Bedingung erfüllt ist (ca. 200 mal). Ich habe versucht, die numpy.where Syntax in Sci.Py.org angelegt, wo

logarr = np.where(metdat < -1 [1,0]) 

aber mein Programm die Syntax nicht mag. Was mache ich falsch oder würde jemand einen besseren Weg empfehlen?

Danke, jmatt

+0

Sie haben die Klammern verlegt. Versuchen Sie: 'np.where (metdat <-1) [1] [0]' – shx2

+0

oder diese Version .... a = np.array ([0, -2,1,1,0, -2,0]) using ... np.wobei (a <-1,1,0) ergibt .... array ([0, 1, 0, 0, 0, 1, 0]) –

Antwort

1

Diese für Ihren Fall arbeitet, die direkt den Typ von logical zu int konvertiert:

(matdat < -1).astype(int) 

Oder np.where, die Syntax sein muss:

np.where(matdat < -1, 1, 0)