2013-03-04 7 views
7

Comportamento strano (errore ??) in numpy. Contrariamente ai documenti, il seguente codice fornisce un RuntimeWarning: valore non valido incontrato in fmaxRuntimeWarning: valore non valido rilevato nel massimo

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) 

mi sono bloccato, come ho bisogno di questi NaNs nei miei array e ora i miei funzioni di arresto in ipython con questo maledetto avvertimento (ok, in realtà non si fermano ma è piuttosto fastidioso)

EDIT:

NumPy 1.6.1

ipython 0.13.1

+2

Quale versione? Ho appena provato il tuo codice e non ho ricevuto un avviso – lxop

+0

Oh, e sto eseguendo 1.6.2 – lxop

+0

Questa installazione è un'installazione EPD su una casella Win7. numpy 1.6.1-3, ipython 0.13.1-2. Non ho più avvisi su una scatola con numpy 1.7.0 e ipython 0.13.1 ... Forse la 1.6.1 è buggata .. –

risposta

7

Ho lo stesso problema. Questi avvertimenti sono un aspetto intenzionale di numpy, per informare gli utenti quando potrebbero imbattersi in alcune limitazioni del framework. Il valore di c è ancora restituito nel codice precedente, quindi funziona correttamente.

Se non si desidera vedere questi errori specifici più, basta modificare le impostazioni avvisi di NumPy come si desidera con:

np.seterr(invalid='ignore') 

E non si vedrà più avvertimenti valore non valido.

+7

Se si conosce la riga esatta che verrà generato questo errore, usando il gestore di contesto numpy 'Con np.errstate (invalid = 'ignore'):' è probabilmente un'alternativa più sicura. – Erik