2012-09-14 8 views
7

Moja macierz jest macierzą 2D i to numpy.nan wartości oprócz wartości ujemnych i dodatnich:Jak mogę warunkowo zmienić wartości w tablicy numpy, biorąc pod uwagę liczby nan?

>>> 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) 

I chcę wymienić wszystkie pozytywne numery z numerem i wszystkie negatywne numery z innym numerem.

Jak mogę to zrobić używając Pythona/Numpy?

(Dla przypomnienia, matryca jest wynikiem geoimage, które chcę wykonać klasyfikację)

+0

Istnieją liczby dodatnie w tablicy, po prostu nie pokazują się w podglądzie – user528025

Odpowiedz

24

Fakt, że masz np.nan w swojej tablicy nie powinno znaczenia . Wystarczy użyć fantazyjne indeksowania:

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

Jeśli chcesz wymienić np.nans:

x[np.isnan(x)] = something_not_nan 

Więcej informacji na temat indeksowania fantazyjny a tutorial i NumPy documentation.

+0

I walczyłem z nią przez większą część ostatnich dwóch dni ... Działa – user528025

+0

@ user528025 jeśli masz problemy, zdecydowanie radzę ci przeczytać część dokumentu, do którego się przyłączyłem. Jest to bardzo pomocne i wkrótce zaczynasz uwielbiać, jak łatwo jest manipulować 'ndarrays' ... –

+0

Tak, po tym, jak zdałem sobie sprawę, jak proste było rozwiązanie, zacząłem szukać materiału, który pomoże mi lepiej zrozumieć narzędzia :) – user528025

3

Spróbuj:

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

dziękuję za odpowiedź. Chociaż był poprawny, nie wybrałem go, ponieważ odpowiedź Pierre'a była bardziej kompletna – user528025

Powiązane problemy