2012-09-14 3 views
7

Meine Array ist eine 2D-Matrix und Werte numpy.nan neben negativen und positiven Werten hat:Wie kann ich die Werte in einem numply-Array unter Berücksichtigung von Nan-Zahlen bedingt ändern?

>>> array 
array([[  nan,   nan,   nan, ..., -0.04891211, 
      nan,   nan], 
    [  nan,   nan,   nan, ...,   nan, 
      nan,   nan], 
    [  nan,   nan,   nan, ...,   nan, 
      nan,   nan], 
    ..., 
    [-0.02510989, -0.02520096, -0.02669156, ...,   nan, 
      nan,   nan], 
    [-0.02725595, -0.02715945, -0.0286231 , ...,   nan, 
      nan,   nan], 
    [  nan,   nan,   nan, ...,   nan, 
      nan,   nan]], dtype=float32) 

Und ich möchte ersetzen alle positiven Zahlen mit einer Nummer und alle negativen Zahlen mit einer anderen Nummer.

Wie kann ich das mit Python/Numpy durchführen?

(Für das Protokoll, ist die Matrix ein Ergebnis von Geobilddaten, die ich eine Klassifizierung durchführen möchten)

+0

Es sind positive Zahlen in das Array, sie zeigen nur nicht in der Vorschau – user528025

Antwort

24

Die Tatsache, dass Sie np.nan in Ihrem Array haben sollte keine Rolle spielen . Verwenden Sie einfach Lust Indizierung:

x[np.isnan(x)] = something_not_nan 

Weitere Informationen über Phantasie Indizierung a tutorial und der NumPy documentation:

x[x>0] = new_value_for_pos 
x[x<0] = new_value_for_neg 

Wenn Sie Ihren np.nans ersetzen möchten.

+0

Und ich kämpfte damit den besseren Teil der letzten zwei Tage ... Es funktioniert – user528025

+0

@ user528025 Wenn Sie Probleme hatten, rate ich Ihnen dringend um etwas von dem Dokument zu lesen, mit dem ich verlinkt bin. Es ist ziemlich hilfreich, und du wirst bald lieben, wie einfach es ist, 'ndarrays' zu manipulieren ... –

+0

Ja, nachdem ich gemerkt habe, wie einfach die Lösung ist, habe ich nach Material gesucht, um mir die Werkzeuge besser zu verstehen :) – user528025

3

Versuchen:

a[a>0] = 1 
a[a<0] = -1 
+1

Vielen Dank für Ihre Antwort. Obwohl es korrekt war, wählte ich es nicht, da die Antwort von Pierre vollständiger war. – user528025

Verwandte Themen