此问题在此处已有答案:
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,并且不会抛出相同的警告。
1条答案
按热度按时间vs91vp4v1#
没有分支(即
if
语句或条件表达式)。参数在作为函数调用的一部分传递时被完全求值。也许,看到一段等效的代码会让这一点更清楚:字符串
Python有一个严格且非常简单的求值策略。这听起来像你期待一个非严格的评估策略,如按名称调用。