如何修复:runtimewarning: invalid value encountered in double_scalars

如何修复:runtimewarning: invalid value encountered in double_scalars

在这篇文章中,我们将讨论如何使用Python修复runtimewarning: invalid value encountered in double_scalars。

当我们使用Numpy库时,基本上会遇到的错误是Runtimewarning: invalid value encountered in doubled_scalars。当我们对一个非常大的数字列表进行数学运算或改变小数字时,以及当我们向NumPy运算提供任何无效的输入如NaN或null作为输入时,我们基本上会遇到这个错误。

这个错误仅仅发生在我们进行数学运算时,我们遇到的是无效的输入。当我们执行一些复杂的数学运算,需要一个非常大的数字或不同的小数字时,一些库不能处理这样的大数字,所以它抛出一个错误。它把这些数字变成了null或NaN,从而导致了操作的错误。

需要采取步骤来防止这个错误:

  • 防止这个错误的最简单方法是使用能够处理这个大数字的函数,这样操作就不会出现错误。
  • 或者用内置函数代替复杂的数学函数,这样我们就可以避免人为错误。
  • 我们可以在操作中做一些数学上的改变,所以值不应该上升到超过值,这样就不会引发错误。

在这里,我们将看到一些引发错误的例子,并看到一些解决方案。

方法1:

显示错误代码的程序

# 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)

输出:

RuntimeWarning: Mean of empty slice.

RuntimeWarning: invalid value encountered in double_scalars

如果我们在计算数组的平均值之前检查它是否提供了有效的输入,我们可以解决这个错误。

语法:

if array1:

expression;

在这个程序中,我们演示了在double_scalars中遇到的错误输入课程无效值的情况。

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")

输出:

please Enter valid array

方法2:使用numpy.special.logsumexp

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)

输出:

main.py:14: RuntimeWarning: overflow encountered in exp

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

main.py:14: RuntimeWarning: invalid value encountered in double_scalars

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

nan

在这里我们看到错误的原因是NumPy库不能处理如此复杂结构上的大数字,所以我们必须使用一些可以处理小数字的内置函数。为此,我们使用numpy.special.logsumexp函数,它用于计算表达式 “np.log(np.sum(np.exp(x))) “的值。

语法: numpy.special.logsumexp(x)

例子:固定代码

# 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)

输出:

Now we can print our Answer :
189.0

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程