Cómo corregir: advertencia de tiempo de ejecución: se encontró un valor no válido en double_scalars

En este artículo, discutiremos cómo corregir la advertencia de tiempo de ejecución: valor no válido encontrado en double_scalars usando Python.

El error que básicamente encontramos cuando usamos la biblioteca Numpy es Runtimewarning: valor no válido encontrado en doubled_scalars. Enfrentamos este error básicamente cuando hacemos operaciones matemáticas en una lista de números muy grandes o variamos el número pequeño y cuando proporcionamos cualquier entrada no válida a la operación NumPy como NaN o nulo como entrada.    

Este error simplemente ocurre cuando realizamos una operación matemática y encontramos que no es válida como entrada. Cuando realizamos alguna operación matemática compleja que requiere un número muy grande o varía un número pequeño, algunas bibliotecas no pueden manejar un número tan grande, por lo que arroja un error. Convierte estos números en nulos o NaN, lo que provoca un error en la operación.  

Los pasos deben evitar este error:

  • La forma más fácil de evitar este error es usar la función que puede manejar ese gran número para que la operación no arroje un error.
  • O en su lugar o función matemática compleja, use una función incorporada para evitar el error humano.
  • Podemos hacer algunos cambios matemáticos en la operación para que el valor no aumente por encima del valor y no pueda generar un error.

Aquí veremos algunos ejemplos que plantean el error y veremos algunas soluciones.

Método 1: Usar si

Programa para mostrar código de error 

Python

# In this program we are demonstrating how wrong
# input course invalid value
# encountered in double_scalars
import numpy
 
array1 = [1, 2, 4, 7, 8]
 
# this input array causes error
array2 = []
 
Marray1 = numpy.mean(array1)
# this line causes the error
Marray2 = numpy.mean(array2)
 
 
print(Marray1)
print(Marray2)

Producción:

 RuntimeWarning: Promedio de segmento vacío.

 RuntimeWarning: valor no válido encontrado en double_scalars

Podemos corregir este error si verificamos la array antes de calcular la media de la array que proporciona la entrada válida de no:

Sintaxis:

si array1:

   expresión;

Código fijo 

En este programa, estamos demostrando cómo se encontró un valor no válido del curso de entrada incorrecto en double_scalars

Python

import numpy
 
array1 = [1, 2, 4, 7, 8]
 
# this input array causes error
array2 = []
 
# Here we check error
if array1 and array2:
    print("Mean of the array 1 is : ", numpy.mean(array1))
    print("Mean of the array is :", numpy.mean(array2))
else:
    print("please Enter valid array")

Producción:

please Enter valid array

Método 2: usar numpy.special.logsumexp

Programa de Python que muestra un encuentro de error no válido en escalador doble.

Python

import numpy as np
from numpy import sinh
 
x = 900
y = 711
 
# This operation  raise error
sol1 = np.log(np.sum(np.exp(x)))/np.log(np.sum(np.exp(y)))
 
print(sol1)

Producción:

main.py:14: RuntimeWarning: desbordamiento encontrado en exp

sol1 = np.log(np.sum(np.exp(x)))/np.log(np.sum(np.exp(y)));

main.py:14: RuntimeWarning: valor no válido encontrado en double_scalars

sol1 = np.log(np.sum(np.exp(x)))/np.log(np.sum(np.exp(y)));

yaya

Aquí hemos visto que el error causa esto porque la biblioteca NumPy no puede manejar este gran número en una estructura tan compleja, por lo que tenemos que usar alguna función integrada que pueda manejar números pequeños. Para este propósito, usamos la función numpy.special.logsumexp que se usa para calcular el valor de la expresión “np.log(np.sum(np.exp(x)))”:

Sintaxis: numpy.special.logsumexp(x);

Ejemplo: código fijo

Python

# Python program showing
# invalid error encounter in double scaler
 
import numpy as np
from scipy.special import logsumexp
 
x = 900
y = 711
 
 
# Solution of the error with the
# help of built-in function
sol1 = logsumexp(x) - logsumexp(y)
 
# sol1 = np.log(np.sum(np.exp(x)))/np.log(np.sum(np.exp(y)))
print("Now we can print our Answer :")
print(sol1)

Producción:

Now we can print our Answer :
189.0

Publicación traducida automáticamente

Artículo escrito por satyam00so 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 *