x = np.arange(0,2,0.5)
valeur = 2*x
if valeur <= 0.6:
print ("this works")
else:
print ("valeur is too high")
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
if valeur <= 0.6:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)
我已经阅读了几篇关于a.any()或a.all()的帖子,但仍无法找到真正清楚解释如何解决问题的方法.我明白为什么Python不喜欢我写的东西,但我不知道如何解决它.
pok*_*oke 68
如果你看看结果valeur <= 0.6
,你可以看到造成这种歧义的原因:
>>> valeur <= 0.6
array([ True, False, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
所以结果是另一个数组,在这种情况下有4个布尔值.那么结果应该是什么?如果一个值为真,条件是否为真?只有当所有值都为真时,条件才真实吗?
这正是numpy.any
和numpy.all
做的.前者需要至少一个真值,后者要求所有值都为真:
>>> np.any(valeur <= 0.6)
True
>>> np.all(valeur <= 0.6)
False
Run Code Online (Sandbox Code Playgroud)
还有一种方法可以得到这个
import numpy as np
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
c = np.array([1,2,3,4])
print((a == b ).all()) #False
print((a == c ).all()) # True
print((a == b ).any()) #False
print((a == c ).any()) #True
print((a > 3 ).all()) #False
Run Code Online (Sandbox Code Playgroud)