奇怪的行为numpy.在哪里[重复]

j0pj023g  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(103)

此问题在此处已有答案

Numpy "Where" function can not avoid evaluate Sqrt(negative)(4个答案)
15天前就关门了。
考虑代码
第一个月
当运行这个时,我得到

RuntimeWarning: invalid value encountered in sqrt
array(0.)

字符串
为什么python甚至运行(在某个地方)第一个分支?上面的代码可能看起来很愚蠢,但我在收到程序中的错误后进行了调查:
np.where(x<= 1, np.sqrt(1-x**2), 1)
x数组包含正元素(至少如果我的其他代码是正确的)。如果我在x数组中有错误,这并不明显,因为通常我使用torch.where,并且不会抛出相同的警告。

vs91vp4v

vs91vp4v1#

没有分支(即if语句或条件表达式)。参数在作为函数调用的一部分传递时被完全求值。也许,看到一段等效的代码会让这一点更清楚:

_temp0 = 1 <= 0
_temp1 = np.sqrt(-1)
_temp2 = 0
np.where(_temp0, _temp1, _temp2)

字符串
Python有一个严格且非常简单的求值策略。这听起来像你期待一个非严格的评估策略,如按名称调用。

相关问题