Se stai usando NumPy per gli array, è anche possibile utilizzare
x = x[numpy.logical_not(numpy.isnan(x))]
Equivalentemente
x = x[~numpy.isnan(x)]
[Grazie a chbrown per la stenografia aggiunto]
Spiegazione
La funzione interna, numpy.isnan
restituisce un array booleano/logico che ha il valore True
ovunque che x
non sia un numero. Come vogliamo il contrario, usiamo l'operatore logico-non, ~
per ottenere un array con True
s ovunque che x
sia un numero valido.
Infine, utilizziamo questo array logico per indicizzare nell'array originale x
, per recuperare solo i valori non NaN.
Oppure 'x = x [numpy.isfinite (x)]' – lazy1
Oppure 'x = x [~ numpy.isnan (x)] ', che equivale alla risposta originale di mutzmatron , ma più breve. Nel caso in cui vuoi mantenere i tuoi infiniti in giro, sappi che 'numpy.isfinite (numpy.inf) == False', ovviamente, ma' ~ numpy.isnan (numpy.inf) == True'. – chbrown
@ dax-felizv Sono d'accordo con @chbrown, NaN e Infinite non sono gli stessi in 'numpy'. @chbrown: grazie per aver evidenziato la stenografia di 'logical_not', ma attenzione che è molto più lento - http://stackoverflow.com/questions/15998188/how-can-i-obtain-the-element-wise-logical- non-of-a-pandas-series, http://stackoverflow.com/questions/13600988/python-tilde-unary-operator-as-negation-numpy-bool-array – jmetz