Hacer que los elementos con valor de división por cero sean iguales a cero en un arreglo numpy 2D.
Tengo un fragmento de código:
import numpy as np
x1 = [[1,4,2,1],
[1,1,4,5],
[0.5,0.3, 1,6],
[0.8,0.2,0.7,1]]
x2 = [[7,0,2,3],
[8,0,4,5],
[0.1,0, 2,6],
[0.1,0,0.16666667,6]]
np.true_divide(x1, x2)
La salida es:
array([[0.14285714, inf, 1. , 0.33333333],
[0.125 , inf, 1. , 1. ],
[5. , inf, 0.5 , 1. ],
[8. , inf, 4.19999992, 0.16666667]])
Sé que algunos elementos tendrán un error de división por cero que se puede ver como ‘inf’.
¿Cómo puedo usar ‘try and except’ para cambiar todos estos resultados ‘inf’ en 0? ¿O existe un mejor método para convertir todas esas ‘inf’ en 0?
davy.ai
Puedes usar la función
np.nan_to_num
para convertir todos los valores deinf
en0
:np.nan_to_num(np.true_divide(x1, x2))
El resultado será:
array([[0.14285714, 0. , 1. , 0.33333333],
[0.125 , 0. , 1. , 1. ],
[5. , 0. , 0.5 , 1. ],
[8. , 0. , 4.19999992, 0.16666667]])