Cómo solucionarlo: se encontró un valor no válido en true_divide

En este artículo, corregiremos los valores no válidos encontrados en true_divide en Python. El valor no válido encontrado en true_divide es una advertencia de tiempo de ejecución que se produce cuando realizamos una operación de división no válida entre elementos de arrays NumPy. Uno de los ejemplos de división no válida es 0/0. 

Nota: Como es solo una advertencia, el código no se detendrá en su ejecución y devolverá un valor No es un número, es decir, nan (o) inf (infinito).

La operación de división entre arrays NumPy se puede realizar mediante divide(), que está presente en el paquete NumPy y permite la operación de división entre los elementos correspondientes de 2 arrays. 

Python3

# import necessary packages
import numpy as np
  
# Create 2 Numpy arrays
Array1 = np.array([6, 2, 0])
Array2 = np.array([3, 2, 0])
  
# divide the values in Array1 by the
# values in Array2
np.divide(Array1, Array2)

Producción:

C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:9: RuntimeWarning: valor no válido encontrado en true_divide

  si __nombre__ == ‘__principal__’:

Array de resultados ([ 2., 1., nan]) 

Explicación:

Aquí estamos dividiendo los elementos de Array1 por los elementos de Array2. Entonces devuelve el valor del cociente.

  • 6/3=2 (Operación Válida)
  • 2/2=1 (Operación Válida)
  • 0/0, que es una operación no válida, por lo que se lanza una Advertencia y devuelve el resultado como No es un número (nan).

Solución:

Podemos corregir esta advertencia de tiempo de ejecución utilizando el método seterr que toma invalid como parámetro y le asigna ignorar como valor. Por eso, puede ocultar el mensaje de advertencia que contiene inválido en eso.

Sintaxis: numpy.seterr(no válido=’ignorar’)

Python3

# import necessary packages
import numpy as np
  
# Create 2 Numpy arrays
Array1 = np.array([6, 2, 0])
Array2 = np.array([3, 2, 0])
  
# Supress/hide the warning
np.seterr(invalid='ignore')
  
# divide the values in Array1 by the 
# values in Array2
np.divide(Array1, Array2)

Producción:

array([ 2.,  1., nan])

Publicación traducida automáticamente

Artículo escrito por akhilvasabhaktula03 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *