Comparar dos vectores elemento a elemento

publicado por: Anonymous

Tengo dos listas en Python:

a = [1, 5, 5]
b = [2, 10, 8]

Si 1 < 2 y 5 < 10 y 5 < 8, es decir si cada elemento de la lista a es menor que su correspondiente elemento de lista b, entonces la variable c valdrá 1; si no valdrá 0.

He intentado hacerlo utilizando numpy.where pero luego no encuentro una función que diga si el vector resultante está vacío o no (un equivalente a isempty de matlab)

Esto es lo que he intentado de momento:

a = [10, 10, 10]
b = [1, 1, 1] 
a = np.asarray(a)
b = np.asarray(b)

if np.where(abs(a) / 5 < abs(b)): residual_check = 1 
else: residual_check = 0 

print(residual_check)

¿Cómo lo podría hacer?

solución

Si quieres hacer con python “puro” sin ninguna librería una opción es un código como el siguiente:

def elementos_a_menor_que_elementos_b(a, b):
    if len(a) != len(b):
        print('Las listas no tiene el mismo tamaño')
        return False

    for item_a, item_b in zip(a, b):
        if item_a > item_b:
            return False

    return True


a = [1, 5, 5]
b = [2, 10, 8]

elementos_a_menor_que_elementos_b(a, b)

El operador zip permite iterar por cada lista, devolviendo un elemento de cada lista a la vez en cada iteración. Si prefieres no utilizar zip por encontrarlo confuso sería algo parecido a:

for i in range(len(a)):
    item_a = a[i]
    item_b = b[i]
    [...]

Para obtener 1 o 0 en lugar de True o False, podrías cambiar directamente la función, “castear” a entero

int(True) == 1
int(False) == 0
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *