关于ZAKER 融媒体解决方案 合作 加入

python – 如何以 0 除以返回 0

CocoaChina 09-16

我试图在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?

最佳答案

在 numpy v1.7 中 , 您可以利用ufuncs的 "where" 选项 . 您可以在一行中执行操作 , 而不必处理 errstate 上下文管理器 .

>>> 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" 参数中保持不变 .

以上内容由"CocoaChina"上传发布 查看原文
相关标签 numpypython

觉得文章不错,微信扫描分享好友

扫码分享