¿Cómo eliminar los valores de NaN de una array NumPy determinada?

En este artículo, vamos a aprender cómo eliminar los valores de Nan de una array determinada. Los valores de man son aquellos valores que no tienen un valor específico asociado o son diferentes del tipo de valores que se utilizarán en la array declarada.

Básicamente, hay dos enfoques que funcionan de la misma manera, solo con una ligera diferencia en la sintaxis. O podríamos usar una función especificada en NumPy o podríamos usar un operador, el funcionamiento básico será el mismo.

Método #1: Usar las funciones numpy.logical_not() y numpy.nan()

El numpy.isnan() dará índices verdaderos para todos los índices donde el valor es nan y cuando se combina con la función numpy.logical_not(), los valores booleanos se invertirán. Entonces, al final, obtenemos índices para todos los elementos que no son nan. De los índices, podemos filtrar los valores que no son nan y guardarlos en otra array.

Python3

import numpy
  
  
# create a 1D array
a = numpy.array([5, 2, 8, 9, 3, numpy.nan,
                 2, 6, 1, numpy.nan])
  
# remove nan values using numpy.isnan()
# and numpy.logical_not
b = a[numpy.logical_not(numpy.isnan(a))]
  
# print the results
print("original 1D array                    ->", a)
print("1D array after removing nan values   ->", b)
print()
  
# create a 2D array
c = numpy.array([[6, 2, numpy.nan], [2, 6, 1],
                 [numpy.nan, 1, numpy.nan]])
  
# remove nan values using numpy.isnan()
# and numpy.logical_not
d = c[numpy.logical_not(numpy.isnan(c))]
  
# print the results
print("Original 2D array   ->")
print(c)
print("2D array converted to 1D after removing nan values   ", d)

Producción:

remove nan in numpy python

Nota: No importa cuál sea la dimensión de la array, se aplanará en una array 1D

Método #2: combinar el operador ~ en lugar de numpy.logical_not() con la función numpy.isnan(). Esto funcionará de la misma manera que el anterior, convertirá cualquier array de dimensiones en una array 1D.

En el siguiente código, solo se muestra la array 2D, por ejemplo.

Python3

import numpy
  
  
# create a 2D array
c = numpy.array([[12, 5, numpy.nan, 7], 
                 [2, 61, 1, numpy.nan],
                 [numpy.nan, 1,
                  numpy.nan, 5]])
  
# remove nan values using numpy.isnan() 
# and numpy.logical_not
d = c[~(numpy.isnan(c))]
  
# print the results
print("Original 2D array   ")
print(c)
print()
  
print("2D array converted to 1D after removing nan values   ")
print(d)

Producción:

remove nan in numpy python

Publicación traducida automáticamente

Artículo escrito por KaranGupta5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *