Matriz 2d de máscara NumPy

Salman Mehmood 15 febrero 2024
  1. Crear máscara o matriz booleana 2d con NumPy en Python
  2. Crear máscara con operadores lógicos de Python
  3. Crear máscara con la función lógica NumPy
Matriz 2d de máscara NumPy

Vamos a aprender con esta explicación qué es la máscara o arreglo booleano. También aprendemos cómo crear una máscara 2d con operadores lógicos de P1ython y la función lógica NumPy en python.

Crear máscara o matriz booleana 2d con NumPy en Python

Empezamos con algún arreglo donde aplicamos alguna condición, y luego generamos una máscara o un arreglo booleano. Por ejemplo, pensemos solo en una matriz de números enteros que se muestra a continuación y luego apliquemos esta condición, que es menor que cinco.

La matriz booleana resultante tendría la misma forma que la matriz de entrada y sería simplemente una aplicación elemento por elemento de la condición. En este caso, 8 es menor que 5, por lo que es falso, 2 es menor que 5, eso es verdadero, 1 es menor que 5 verdadero, y así sucesivamente.

A veces representa máscara por 0-1, y el falso representa 0 y 1 representa verdadero.

Matriz booleana Mascarilla

Crear máscara con operadores lógicos de Python

Saltaremos al código importando numpy y crearemos una variable llamada My_2DArray, que se completa con una lista 2d de Python usando una matriz numpy.

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])
print(My_2DArray)

Producción :

[[-12 -31   5]
 [  7   0  -9]]

Veamos un ejemplo para demostrar máscara. Estamos creando una nueva variable llamada zero_mod_array, que toma los valores donde My_2DArray es divisible por 7 usando el operador %.

Seleccionamos todos los elementos de la matriz donde el resto después de la división por 7 es igual a cero.

Código:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

zero_mod_array = 0 == (My_2DArray % 7)
print(zero_mod_array)

Después de ejecutar, vemos que hemos creado una matriz de valores booleanos. Si nos fijamos en el primer elemento de un arreglo que es -12 no es divisible por 7, y el siguiente tampoco lo es, pero el primer elemento de la segunda lista es 7, que es divisible por 7, y el segundo elemento 0 también es divisible por 7.

Por lo tanto, ambos elementos son Verdaderos a excepción de otros elementos porque todos los elementos no son divisibles por 7, por lo que obtuvimos valores Falsos en sus posiciones.

Producción :

[[False False False]
 [ True True False]]

En el siguiente ejemplo, estamos creando una variable llamada Sun_array, y estos serían elementos esenciales de las matrices de máscaras booleanas. Estamos tomando My_2DArray e indexándolo con los resultados que creamos en zero_mod_array.

Código:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

zero_mod_array = 0 == (My_2DArray % 7)

Sun_array = My_2DArray[zero_mod_array]
print(Sun_array)

Producción :

[7 0]

Usemos Sun_array como una matriz de máscara para indexarse, seleccionando los elementos dentro de Sun_array que son mayores que 0 y creando una nueva matriz que solo contiene los elementos positivos.

Sun_array[Sun_array > 0]

En nuestro Sun_array solo un elemento es mayor que 7 array([7]). Si examinamos el Sun_array, veremos que los valores no cambian; sigue siendo una matriz ([7, 0]).

Crear máscara con la función lógica NumPy

Examinemos un método alternativo para realizar la misma tarea. De manera particular, utilizaremos operadores lógicos NumPy.

Primero, crearemos una variable llamada mod_test, que asignará los resultados del operador resto como hicimos anteriormente.

Haremos algo similar y crearemos otra variable llamada positive_test, y esta vez asignaremos los valores donde My_2DArray es mayor que cero, lo que significa que indicará los valores booleanos después de aplicar la condición en cada elemento de My_2DArray .

Crearemos otra variable llamada combined_test y que utiliza la función logical_and() y toma como argumentos mod_test y positive_test.

Código:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

mod_test = 0 == (My_2DArray % 7)
positive_test = My_2DArray > 0
combined_test = np.logical_and(mod_test, positive_test)
print(combined_test)

Después de la ejecución, vemos los valores booleanos perfectos y contiene solo un valor que corresponde a la matriz.

Producción :

[[False False False]
 [ True False False]]

Podemos usar combined_test para indexar nuestra matriz original y obtener el mismo valor que obtuvimos anteriormente.

Código:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

mod_test = 0 == (My_2DArray % 7)
positive_test = My_2DArray > 0
combined_test = np.logical_and(mod_test, positive_test)
print(My_2DArray[combined_test])

Producción :

[7]

Así es como podemos enmascarar la matriz NumPy 2d usando dos técnicas para lograr el mismo resultado.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn