我需要计算x
通过以下方式(旧代码):
x = numpy.where(b == 0, a, 1/b)
我想它在python-2.x /questions/tagged/python-2.x(就像在一个python-2.7 /questions/tagged/python-2.7代码),但它不起作用python-3.x /questions/tagged/python-3.x (if b = 0
它返回一个错误)。
如何让它在 python-3.x 中工作?
编辑:错误消息(Python 3.6.3):
ZeroDivisionError: division by zero
numpy.where
不是条件执行;这是有条件的选择。 Python 函数参数总是在函数调用之前完全求值,因此函数无法有条件或部分求值其参数。
你的代码:
x = numpy.where(b == 0, a, 1/b)
告诉 Python 进行反转every的元素b
然后从中选择元素a
or 1/b
基于的元素b == 0
。 Python 甚至从未达到选择元素的程度,因为计算1/b
fails.
您可以通过仅反转非零部分来避免此问题b
。假设a
and b
具有相同的形状,它可能看起来像这样:
x = numpy.empty_like(b)
mask = (b == 0)
x[mask] = a[mask]
x[~mask] = 1/b[~mask]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)