Python数组中除以0或者乘以无穷大但却不想报错处理方法
有时候会遇到分母是一个数组,但是数组中有0的情况,而我们又知道分母为0时商应该等于多少,不希望程序报错。
比如以下的情况:
解决方法如下:
还有一个要注意的情况:如果ndarray不是float类型的数据可能会报错:
比如No loop matching the specified signature and casting was found for ufunc true_divide错误
将a与b的数据类型改成float32就不会报错了,如下
a=np.array([1,2,3,0],dtype=np.float32)
b=np.array([2,4,9,0],dtype=np.float32)
np.divide(a,b,np.zeros_like(a),where=b!=0)
结果为
array([0.5 , 0.5 , 0.33333334, 0. ], dtype=float32)
类似地,乘以一个无穷大的数也会报错,使用np.multiply可以避免报错。
还有一个办法就是使用np.errstate,用法如下:
a=np.array([1,2,7,3,5,2])
b=np.array([8,2,5,3,5,0])
with np.errstate(divide='ignore', invalid='ignore'):
print(a/b)
结果为:
[0.125 1. 1.4 1. 1. inf]
Reference:
[1]. https://stackoverflow.com/questions/26248654/how-to-return-0-with-divide-by-zero
版权声明:本文为weixin_43703935原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。