x = np.arange(0,2,0.5)
valeur = 2*x

if valeur <= 0.6:
    print ("this works")
else:
    print ("valeur is too high")

这是我得到的错误:
if valeur <= 0.6:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我已经阅读了几篇有关a.any()或a.all()的文章,但仍然找不到真正清楚地说明如何解决问题的方法。我明白了为什么Python不喜欢我写的内容,但是我不确定如何修复它。

最佳答案

如果查看valeur <= 0.6的结果,您会发现是什么导致这种歧义:

>>> valeur <= 0.6
array([ True, False, False, False], dtype=bool)

因此,结果是在这种情况下具有4个 bool 值的另一个数组。现在结果应该是什么?当一个值为真时,条件是否为真?仅当所有值都为真时,条件才应为真吗?

这就是numpy.anynumpy.all所做的。前者要求至少一个真实值,而后者则要求所有值都是真实的:
>>> np.any(valeur <= 0.6)
True
>>> np.all(valeur <= 0.6)
False

10-07 18:24