📜  如何修复:在 true_divide 中遇到无效值

📅  最后修改于: 2022-05-13 01:54:40.234000             🧑  作者: Mango

如何修复:在 true_divide 中遇到无效值

在本文中,我们将修复Python中 true_divide 中遇到的无效值。 true_divide 中遇到的无效值是当我们在 NumPy 数组的元素之间执行无效除法运算时发生运行时警告。无效除法的示例之一是 0/0。

注意:由于它只是一个警告,代码不会停止执行并返回一个非数字值,即 nan(或)inf(无穷大)。

NumPy 数组之间的除法运算可以使用 NumPy 包中存在的divide()来完成,它允许在 2 个数组的对应元素之间进行除法运算。

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)


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)


输出:

解释:

这里我们将 Array1 的元素除以 Array2 的元素。所以它返回商值。

  • 6/3=2(有效操作)
  • 2/2=1(有效操作)
  • 0/0 这是一个无效操作,因此会引发警告并将结果作为非数字 (nan) 返回。

解决方案:

我们可以通过使用 seterr 方法来修复这个运行时警告,该方法将 invalid 作为参数并将 ignore 作为值分配给它。这样,它可以隐藏其中包含无效的警告消息。

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)

输出:

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