En este artículo, discutiremos cómo corregir RuntimeWarning: desbordamiento encontrado en exp en Python.
Esta advertencia ocurre al usar la función exp() de la biblioteca NumPy al usar un valor que es demasiado grande. Esta función se usa para calcular el exponencial de todos los elementos en la array de entrada o un elemento (0-D Array of NumPy).
Ejemplo : código para representar una advertencia
Python3
import numpy as np print(np.exp(789))
Producción:
Esta advertencia ocurre porque el tamaño máximo de datos que se puede usar en NumPy es float64 cuyo rango máximo es 1.7976931348623157e+308. Al tomar logaritmo su valor se convierte en 709.782. Para cualquier valor mayor que este, se genera la advertencia.
Discutamos formas de solucionar esto.
Método 1: Usar float128
El tipo de datos float64 se puede cambiar a float128.
Ejemplo: Programa para corregir la advertencia
Python3
import numpy as np x = 789 x = np.float128(x) print(np.exp(x))
Producción:
Para ndarray, puede usar el parámetro dtype del método de array.
Ejemplo: Programa para producir salida sin usar dtype
Python3
import numpy as np cc = np.array([789, 0.34, -1234.1]) print(np.exp(cc))
Producción:
Ejemplo: Advertencia fija usando dtype
Python3
import numpy as np cc = np.array([789, 0.34, -1234.1], dtype=np.float128) print(np.exp(cc))
Producción:
Método 2: usar advertencias de filtro()
Los mensajes de advertencia generalmente se emiten en situaciones en las que es útil alertar al usuario de alguna condición en un programa, donde esa condición (normalmente) no garantiza generar una excepción y finalizar el programa. Para hacer frente a las advertencias, hay un módulo integrado llamado advertencia. Para leer más sobre las advertencias de Python, puede consultar este artículo .
La función filterwarnings() se puede utilizar para controlar el comportamiento de las advertencias en sus programas. El filtro de advertencias controla si las advertencias se ignoran, se muestran o se convierten en errores (generando una excepción). Esto se puede hacer usando diferentes acciones:
- «ignorar» para nunca imprimir advertencias coincidentes
- «error» para convertir las advertencias coincidentes en excepciones
- «una vez» para imprimir solo la primera aparición de advertencias coincidentes, independientemente de la ubicación
Sintaxis:
advertencias.filteradvertencias(acción, mensaje=”, categoría=Advertencia, módulo=”, lineno=0, añadir=Falso)
Ejemplo: Reparación de advertencia usando filterwarnings()
Python3
import numpy as np import warnings # suppress warnings warnings.filterwarnings('ignore') x = 789 x = np.float128(x) print(np.exp(x))
Producción:
Publicación traducida automáticamente
Artículo escrito por sornodeepchandra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA