【发布时间】:2018-06-08 11:52:10
【问题描述】:
我正试图将一个数组除以另一个,比如说
a = np.array([[2., 2., 2., 2., 2.], [2., 2., 2., 2., 2.]])
b = np.array([[20., 16., 0., 10., nan], [5., 4., nan, 2., 0.]])
np.divide(a,b)
会导致
array([[ 0.1 , 0.125, inf, 0.2 , nan],
[ 0.4 , 0.5 , nan, 1. , inf]])
并给我错误 RuntimeWarning:在 true_divide 中遇到的除以零,这不足为奇。
我试过了
try:
np.divide(a,b)
except ZeroDivisionError:
value = float('nan')
这没有用。如果循环也不是解决方案:
if b != 0:
value = a / b
else:
value = float('nan')
给我错误“具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()'。但是使用
if np.any(b != 0):
作为第一行,产生
array([[ 10. , 8. , 0. , 5. , nan],
[ 2.5, 2. , nan, 1. , 0. ]])
同样适用
if np.all(b != 0):
我明白这一定是因为 np.any 只返回一个布尔值 True 或 False。是否没有其他选项可以替换
提出的 inf 值np.divide(a,b)
并接受 RuntimeWarning?
【问题讨论】:
标签: python arrays numpy nan divide-by-zero