2012-07-12 10 views

Respuesta

98
>>> a = np.array([[1,2,3], [4,5,np.nan], [7,8,9]]) 
array([[ 1., 2., 3.], 
     [ 4., 5., nan], 
     [ 7., 8., 9.]]) 

>>> a[~np.isnan(a).any(axis=1)] 
array([[ 1., 2., 3.], 
     [ 7., 8., 9.]]) 

y reasignar a este a.

Explicación: np.isnan(a) devuelve una matriz similar con True donde NaN, NaN, False en otro lugar. .any(axis=1) reduce una matriz m*n-n con un or operación lógica en el conjunto de filas, ~ invierte True/False y a[ ] elige sólo las filas de la matriz original, que tienen True dentro de los corchetes.

+0

Awesome gracias. ¿Sería posible obtener una explicación sobre lo que está haciendo? Todavía un poco nuevo para numpy :) – zebra

+0

@zebra - explicado. – eumiro

+3

'np.isfinite' también es útil en este caso, así como también cuando desea deshacerse de los valores' ± Inf'. No requiere el '~', ya que devuelve verdadero solo para reales finitos. – naught101

Cuestiones relacionadas