我正在尝试在python中执行元素明智的除法,但是如果遇到零,则需要将商设为零。
例如:
array1 = np.array([0, 1, 2]) array2 = np.array([0, 1, 1])
array1 / array2 # should be np.array([0, 1, 2]) 我总是可以在数据中使用for循环,但是要真正利用numpy的优化,我需要除法函数在除以零错误后返回0,而不是忽略错误。
除非我缺少任何东西,否则numpy.seterr()不会在出现错误时返回值。关于我如何在设置自己的零错误处理除数的同时,如何从numpy中获得最大收益,还有人有其他建议吗?
问题来源于stack overflow
在numpy v1.7 +中,您可以利用ufuncs的“ where”选项。您可以一行完成事情,而不必与错误上下文管理器打交道。
a = np.array([-1, 0, 1, 2, 3], dtype=float) b = np.array([ 0, 0, 0, 2, 2], dtype=float)
out
the indices where (b == 0) will be uninitialized!c = np.divide(a, b, out=np.zeros_like(a), where=b!=0) print(c) [ 0. 0. 0. 1. 1.5] 在这种情况下,它将在“其中” b不等于零的任何地方进行除法计算。当b等于零时,它与您最初在'out'参数中给它的任何值保持不变。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。