viernes, 27 de diciembre de 2019

Comparar arrays en Numpy


En Numpy hay funciones que facilitan la tarea de comparar los elementos de un array con un valor o con los valores de otro array para saber si son mayores, iguales, menores, distintos, etc., para verificar si todos los valores o alguno son True (o tienen un valor distinto de 0), para obtener los valores máximos o mínimos y funciones para evaluar el resultado de operaciones a nivel binario.


Funciones para comparar arrays


greater(), less(), equal(), not_equal(), ...


Estos métodos comparan los elementos de un array con un valor o con los elementos de otro array, elemento a elemento, y devuelven un array con valores booleanos (True y False) según sea el resultado de la comparación: mayor que, mayor o igual que, menor que, menor o igual que, igual que o distinto con los métodos greater(), greater_equal(), less(), less_equal(), equal() y not_equal(), respectivamente.

# Devuelve True si el elemento del array a es mayor que 2.

a = np.array([1, 2, 3])
b = np.greater(a, 2)
print(b)

# [False False  True]

# Devuelve True si el elemento del array a es menor o 
# igual que el del array b.

a = np.array([1, 2, 3])
b = np.array([0, 2, 7])
c = np.less_equal(a, b)
print(c)

# [False  True  True]

# Devuelve True si el elemento del array es igual que el del array b.

a = np.array([1, 2, 3])
b = np.array([0, 2, 7])
c = np.equal(a, b)
print(c)

# [False  True False]


all()


Devuelve True si todos los elementos del array son True o tienen valores que son distinto de 0.

a = np.array([True, True, False])
estado = a.all()
print(estado)

# False

b = np.array([5, 4, 4])
estado = b.all()
print(estado)

# True


any()


Devuelve True si alguno de los elementos del array es True o un valor distinto de 0.

a = np.array([True, True, False])
estado = a.any()
print(estado)

# True

b = np.array([0, 0, 0])
estado = b.any()
print(estado)

# False


Funciones para comparar arrays y obtener máximos o mínimos


maximum()


Obtener valores máximos.

# Comparar dos arrays y obtener valores máximos.

a = np.array([0, 9, 3, 7])
b = np.array([0, 2, 7, 4])
c = np.maximum(a, b)
print(c)

# [0 9 7 7]

# Comparar un array con un valor y obtener valores máximos.

a = np.array([0, 9, 3, 7])
c = np.maximum(a, 5)
print(c)

# [5 9 5 7]


minimum()


Obtener valores mínimos.

# Comparar dos arrays y obtener valores mínimos.

a = np.array([0, 9, 3, 7])
b = np.array([0, 2, 7, 4])
c = np.minimum(a, b)
print(c)

# [0 2 3 4]

# Comparar un array con valor y obtener valores mínimos.

a = np.array([0, 9, 3, 7])
c = np.minimum(a, 5)
print(c)

# [0 5 3 5]


Funciones para evaluar operaciones a nivel binario


logical_and(), logical_or(), logical_xor(), logical_not()


Estos métodos operan a nivel binario los elementos de un array con un valor o con los elementos de otro array, elemento a elemento, y devuelven un array con valores booleanos (True y False) según sea el resultado de la operación 0 o distinto de 0 con los métodos logical_and(), logical_or(), logical_xor(), logical_not(), entre otros.

# Devuelve False si el resultado del producto lógico (AND) es 0.

a = np.array([0, 0, 1, 0])
b = np.array([0, 0, 1, 0])
c = np.logical_and(a, b)
print(c)

# [False False  True False]

# Devuelve False si el resultado de la suma lógica (OR) es 0.

a = np.array([0, 2, 3, 7])
b = np.array([0, 2, 7, 4])
c = np.logical_or(a, b) 
print(c)

# [False  True  True  True]

# Operación:
# 000 010 011 111
# 000 010 111 100
# --- --- --- ---
# 000 010 111 111