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不喜欢我写的东西,但我不知道如何修复它。
7条答案
按热度按时间5f0d552i1#
如果你看一下
valeur <= 0.6
的结果,你可以看到是什么导致了这种二义性:字符串
所以结果是另一个数组,在本例中有4个布尔值。现在的结果应该是什么呢?当一个值为真时,条件是否应该为真?只有当所有值都为真时,条件才为真吗?
这正是
numpy.any
和numpy.all
所做的。前者要求至少有一个true值,后者要求所有值都为true:型
thtygnil2#
还有一个办法
字符串
gfttwv5a3#
您评论:
valeur是等于[ 0]的向量。我对每一个单项都感兴趣。对于0.6以下的部分,则返回“this works”....
如果你对每一个术语都感兴趣,那么就编写代码,这样它就可以处理每一个术语。比如说。
字符串
这将写两行。
当您尝试将
numpy
代码用于需要单个标量值的上下文时,该错误由numpy
代码产生。if b:...
只能做一件事。它本身不会遍历b
的元素,对每个元素做不同的事情。你也可以将迭代转换为列表解析,例如。
型
t40tm48m4#
字符串
jecbmhm35#
这也应该起作用,并且是对问题中所问问题的更接近的回答:
字符串
qaxu7uf26#
如果您想对每个元素执行一些操作:
使用numpy的函数
字符串
n3ipq98p7#
对于这种特定的模式(如果元素满足特定条件,则将其Map到一个值,否则将其Map到另一个值),您可以使用
np.where()
:字符串
该输出:
型