Si está utilizando numpy para sus matrices, también se puede utilizar
x = x[numpy.logical_not(numpy.isnan(x))]
De manera equivalente
x = x[~numpy.isnan(x)]
[Gracias a chbrown para la taquigrafía añadido]
Explicación
La función interna, numpy.isnan
devuelve una matriz booleana/lógica que tiene el valor True
donde x
no es un número. Como queremos lo contrario, utilizamos el operador lógico-no, ~
para obtener una matriz con True
s en todas partes que x
es un número válido.
Por último, utilizamos esta matriz lógica para indexar en la matriz original x
, para recuperar solo los valores que no son de NaN.
O 'x = x [numpy.isfinite (x)]' – lazy1
O 'x = x [~ numpy.isnan (x)] ', que es equivalente a la respuesta original de mutzmatron, pero más corta. En caso de que quiera mantener sus infinitos, sepa que 'numpy.isfinite (numpy.inf) == False', por supuesto, pero' ~ numpy.isnan (numpy.inf) == True'. – chbrown
@ dax-felizv Estoy de acuerdo con @chbrown, NaN e Infinite no son lo mismo en 'numpy'. @chbrown - gracias por señalar la abreviatura de 'logical_not', aunque ten en cuenta que es considerablemente más lento - http://stackoverflow.com/questions/15998188/how-can-i-obtain-the-element-wise-logical- serie no-de-un-pandas, http://stackoverflow.com/questions/13600988/python-tilde-unary-operator-as-negation-numpy-bool-array – jmetz