Numpy where 和除以零

2024-04-06

我需要计算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(使用前将#替换为@)

Numpy where 和除以零 的相关文章

随机推荐