¿Cómo enmascarar una array usando otra array en Python?

En este artículo, aprenderemos cómo enmascarar una array utilizando otra array en Python. Cuando se trabaja con conjuntos de datos o marcos de datos, el enmascaramiento puede ser extremadamente útil. Las máscaras son una array que contiene la lista de valores booleanos para la condición dada. La array enmascarada son las arrays que tienen entradas no válidas o faltantes.

Usando el enmascaramiento de arrays, podemos manejar fácilmente las entradas faltantes, no válidas o no deseadas en nuestra array o conjunto de datos/marco de datos. El enmascaramiento es esencial para trabajar con la lista de valores booleanos, es decir, Verdadero o Falso, que cuando se aplica a una array original para devolver el elemento de interés, aquí Verdadero se refiere al valor que satisface la condición dada, mientras que Falso se refiere a los valores que no satisfacen la condición. condición.

Podemos enmascarar la array usando otra usando las siguientes funciones: –

numpy.ma.masked_where(condición, arreglo)

numpy.ma.getmask(arr)

numpy.ma.masked_array(array, máscara=)

dónde,

condición: condición para enmascarar

arr: arr para ser enmascarado

máscara: resultado de una array enmascarada

Pasos requeridos

  • Importar la biblioteca.
  • Cree una función para enmascarar.
  • El enmascaramiento se puede hacer siguiendo dos enfoques: –
    • Usando la función masked_where(): Pase las dos arrays en la función como un parámetro y luego use la función numpy.ma.masked_where() en la que pasa la condición para enmascarar y enmascarar la array. En esto, estamos dando la condición para enmascarar usando una array y enmascarando la otra array para esa condición.
    • Usando las funciones masked_where(), getmask() y masked_array(): Pase las dos arrays en la función como un parámetro y luego use la función numpy.ma.masked_where() en la que pasa la condición para enmascarar y enmascarar la array en esto estamos usando la misma array para la que estamos dando la condición para hacer y la array para enmascarar y almacenar el resultado en la variable, luego use la función numpy.ma.getmask() en la que pasa el resultado de la función marcada_dónde y almacenarlo en la variable nombrado como ‘res_mask’. Ahora enmascare otra array usando la máscara creada, para esto, estamos usando numpy.ma.masked_array()función en la que se pasa la array a crear y el parámetro mask=’res_mask’ para hacer la array usando otra array y almacenarla en una variable que se denomine como ‘masked’.
  • Luego devuelva el enmascarado de la función.
  • Ahora crea la función principal.
  • Cree dos arrays, una para enmascarar a otra.
  • Luego llame a la función como hemos creado anteriormente y pase ambas arrays en la función como un parámetro y almacene el resultado en una variable llamada ‘enmascarada’.
  • Ahora, para obtener la array como una array 1-d, estamos usando numpy.ma.compressed() que pasa el enmascarado como parámetro.
  • Luego imprima la array enmascarada.

Ejemplo 1: enmascarar la primera array usando la segunda array

En el ejemplo anterior, estamos enmascarando la primera array usando la segunda array sobre la base de la condición de que cada elemento de la primera array mod 7 sea verdadero, aquellos elementos que satisfacen la condición en ese índice se enmascaran en la primera array.

Dado que tenemos array1 = [1,2,4,5,7,8,9] y array2 = [10,12,14,5,7,0,13], hemos dado la condición array2%7 por lo que en Los elementos 14, 7 y 0 de array2 satisfacen la condición y están presentes en los índices 2, 4 y 5, por lo que en el mismo índice de array1 los elementos están enmascarados, por lo que el array resultante es [4 7 8].

Python

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
    
  # masking the array1 by using array2 
  # where array2 mod 7 is true
  mask = np.ma.masked_where(ar2%7,ar1)
    
  return mask
  
# main function
if __name__ == '__main__':
    
  # creating two arrays
  x = np.array([1,2,4,5,7,8,9])
  y = np.array([10,12,14,5,7,0,13])
    
  # calling masking function to get 
  # masked array
  masked = masking(x,y)
    
  # getting the values as 1-d array which 
  # are non masked 
  masked_array = np.ma.compressed(mask)
  
  # printing the resultant array after masking
  print(f'Masked Array is:{masked_array}')

Producción:

Ejemplo 2: Enmascarar la segunda array usando la primera array

En el ejemplo anterior, estamos enmascarando la segunda array usando la primera array, dando la condición array1<5 significa que los elementos de la array1 que son menos de 5 cumplen la condición y el índice de ese elemento se enmascarará en la segunda array.

Como tenemos array1 = [1,2,4,5,7,8,9] y array2 = [10,12,14,5,7,0,13], entonces en array1 los elementos 1,2 y 4 son menos que 5, estos están presentes en el índice 0,1 y 2, por lo que este elemento cumple la condición, por lo que en array2 los elementos presentes en el mismo índice están enmascarados, y estamos usando la función numpy.ma.compressed() por lo que esta función devuelve el valores sin máscara. Entonces tenemos [5 7 0 10] después del enmascaramiento. 

Python

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
  
    # masking the array2 by using array1
    # where condition array1 is less than
    # 5 is true
    mask = np.ma.masked_where(ar1 < 5, ar2)
  
    return mask
  
  
# main function
if __name__ == '__main__':
  
    # creating two arrays
    x = np.array([1, 2, 4, 5, 7, 8, 9])
    y = np.array([10, 12, 14, 5, 7, 0, 13])
  
    # calling masking function to get
    # masked array
    masked = masking(x, y)
  
    # getting the values as 1-d array which 
    # are non masked
    masked_array = np.ma.compressed(mask)
  
    # printing the resultant array after masking
    print(f'Masked Array is:{masked_array}')

Producción:

Ejemplo 3: enmascarar la primera array usando la segunda array a través de la función getmask()

En el ejemplo anterior, para hacer la máscara de la primera array usando la segunda array, primero estamos creando la máscara de la segunda array dando la condición ar2%3 para ar2. Luego estamos usando la función numpy.ma.getmask() en la que estamos pasando el resultado de la máscara creada, luego estamos creando la máscara de la primera array usando numpy.ma.masked_array() en la que pasamos ar1 y pasamos máscara =res_mask que es la máscara de array2.

De esta forma, podemos enmascarar una array usando otra array.

Python

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
  
    # creating the mask of array2 where
    # condition array2 mod 3 is true
    mask = np.ma.masked_where(ar2 % 3, ar2)
  
    # getting the mask of the array
    res_mask = np.ma.getmask(mask)
  
    # masking the array1 with the result 
    # of mask of array2
    masked = np.ma.masked_array(ar1, mask=res_mask)
  
    return masked
  
  
# main function
if __name__ == '__main__':
      
    # creating two arrays
    x = np.array([1, 2, 4, 5, 7, 8, 9])
    y = np.array([10, 12, 14, 5, 7, 0, 12])
  
    # calling masking function to get masked
    # array
    masked = masking(x, y)
    masked_array = np.ma.compressed(masked)
  
    # printing the resultant array after masking
    print(f'Masked Array is:{masked_array}')

Producción:

Ejemplo 4: enmascarar la segunda array usando la primera array a través de la función getmask()

En el ejemplo anterior, para hacer la máscara de la segunda array usando la primera array, primero estamos creando la máscara de la primera array dando la condición ar1<4 para ar1. Luego estamos usando la función numpy.ma.getmask() en la que estamos pasando el resultado de la máscara creada, luego estamos creando la máscara de la segunda array usando numpy.ma.masked_array() en la que pasamos ar2 y pasamos máscara =res_mask que es la máscara de array1.

De esta forma, podemos enmascarar una array usando otra array.

Python

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
  
    # creating the mask of array2 where
    # condition array2 mod 3 is true
    mask = np.ma.masked_where(ar2 % 3, ar2)
  
    # getting the mask of the array
    res_mask = np.ma.getmask(mask)
  
    # masking the array1 with the result of 
    # mask of array2
    masked = np.ma.masked_array(ar1, mask=res_mask)
  
    return masked
  
  
# main function
if __name__ == '__main__':
      
    # creating two arrays
    x = np.array([1, 2, 4, 5, 7, 8, 9])
    y = np.array([10, 12, 14, 5, 7, 0, 12])
  
    # calling masking function to get
    # masked array
    masked = masking(x, y)
    masked_array = np.ma.compressed(masked)
  
    # printing the resultant array after masking
    print(f'Masked Array is:{masked_array}')

Producción:

Publicación traducida automáticamente

Artículo escrito por srishivansh5404 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 *