Python - Numpy - diferencia entre dos arrays con tolerancia

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 15 puestos en Python (en relación al último mes)
Gráfica de Python

Numpy - diferencia entre dos arrays con tolerancia

Publicado por Alejandro (4 intervenciones) el 10/02/2020 17:32:00
Los arrays a = [0, 1, 2, 3] y b = [-0.1, 1.01, 1.98, 3.15], ¿son iguales si se considera un valor de tolerancia
absoluta (diferencia entre elementos de la misma posición) inferior a 0.16?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 388
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Numpy - diferencia entre dos arrays con tolerancia

Publicado por Daniel (111 intervenciones) el 10/02/2020 19:53:25
Hola,

Para eso tienes la función allclose de numpy, que permite comparar dos vectores tanto con tolerancia absoluta como relativa. El ejemplo propuesto seria:

1
np.allclose(a, b, atol=0.16)

Saludos,
Daniel Rodríguez.
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Numpy - diferencia entre dos arrays con tolerancia

Publicado por joel (901 intervenciones) el 10/02/2020 20:55:54
Hola Alejandro, si quieres hacerlo sin la librería seria algo así:

1
2
def igualesConTolerancia(a, b, tolerancia):
    return len([i for i in range(len(a)) if (a[i]==0 and (b[i]<tolerancia and b[i]>(0-tolerancia))) or (b[i]<a[i]*(1+tolerancia) and b[i]>a[i]-a[i]*tolerancia)])==len(a)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 388
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Numpy - diferencia entre dos arrays con tolerancia

Publicado por Daniel (111 intervenciones) el 10/02/2020 23:24:38
Hola,

No olvidemos que en la librería matemática hay una función isclose que hace comparaciones de números con tolerancia (también soporta tolerancia absoluta y relativa). Por lo que se puede hacer sin NumPy solo con

1
all([math.isclose(x, y, rel_tol=0.16) for x,y in zip(a,b)])

Saludos,
Daniel Rodríguez.
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Numpy - diferencia entre dos arrays con tolerancia

Publicado por joel (901 intervenciones) el 11/02/2020 08:01:29
Muy bueno Daniel!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar