开发者社区> 问答> 正文

如何用除以零返回0

我正在尝试在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

展开
收起
保持可爱mmm 2020-02-08 12:25:52 450 0
1 条回答
写回答
取消 提交回答
  • 在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)

    If you don't pass 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'参数中给它的任何值保持不变。

    2020-02-08 12:26:03
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载