2013-03-04 12 views
7

Dziwne zachowanie (błąd ??) w numpy. W przeciwieństwie do docs poniższy kod daje RuntimeWarning: nieprawidłowe wartości spotykanych w fmaxRuntimeWarning: niepoprawna wartość napotkana w maksimum

a = np.random.uniform(0.1, 0.4, (5, 5)) 
b = np.random.uniform(0, 3.5, (5, 5)) 
b[0, 0] = np.nan 

c = np.fmax(a, b) # Same problem with c = np.maximum(a, b) 

utknąłem jak muszę te Nans w moich tablic i teraz moje funkcje zatrzymać w ipython z tym cholernym ostrzegawcze (ok, oni naprawdę nie zatrzymać, ale to raczej irytujące)

EDIT:

numpy 1.6.1

ipython 0.13.1

+2

Jaką wersję? Po prostu wypróbowałem twój kod i nie otrzymałem ostrzeżenia. – lxop

+0

O, i używam 1.6.2 – lxop

+0

Ta instalacja jest instalacją EPD na pudełku Win7. numpy 1.6.1-3, ipython 0.13.1-2. Nie mam też więcej ostrzeżenia na pudełku z numpy 1.7.0 i ipython 0.13.1 ... Może 1.6.1 jest buggy .. –

Odpowiedz

7

Mam ten sam problem, jak również. Ostrzeżenia te są zamierzonym aspektem numpy, informującym użytkowników, gdy mogą napotkać pewne ograniczenia struktury. Wartość c jest nadal zwracana w powyższym kodzie, więc działa poprawnie.

Jeśli nie chcesz, aby zobaczyć te konkretne błędy już tylko zmodyfikować ustawienia ostrzegania NumPy jako chcesz z:

np.seterr(invalid='ignore') 

I nie będzie widać już nieprawidłowych wartości ostrzeżeń.

+7

Jeśli znasz dokładną linię, którą ten błąd zostanie zgłoszony, użyj numpy menedżera kontekstów 'with np.errstate (invalid = 'ignore'):' jest prawdopodobnie bezpieczniejszą alternatywą. – Erik