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.any
和numpy.all
所做的。前者要求至少一个真实值,而后者则要求所有值都是真实的:>>> np.any(valeur <= 0.6)
True
>>> np.all(valeur <= 0.6)
False