presentError()
这是我得到的错误:
presentError(... lots of args ...)
我已经阅读了几篇关于a.any()或a.all()的帖子,但仍无法找到真正清楚解释如何解决问题的方法。我明白为什么Python不喜欢我写的东西,但我不知道如何解决它。
答案 0 :(得分:64)
如果您查看valeur <= 0.6
的结果,可以看到造成这种歧义的原因:
>>> valeur <= 0.6
array([ True, False, False, False], dtype=bool)
所以结果是另一个数组,在这种情况下有4个布尔值。那么结果应该是什么?如果一个值为真,条件是否为真?只有当所有值都为真时,条件才真实吗?
这正是numpy.any
和numpy.all
所做的。前者需要至少一个真值,后者要求所有值都为真:
>>> np.any(valeur <= 0.6)
True
>>> np.all(valeur <= 0.6)
False
答案 1 :(得分:5)
还有一种方法可以得到这个
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
答案 2 :(得分:3)
你发表评论:
valeur是一个等于[0. 1. 2. 3.]的向量。我对每个单词都感兴趣。对于低于0.6的部分,然后返回“this works”....
如果您对每个术语感兴趣,请编写代码以便处理每个术语。例如。
for b in valeur<=0.6:
if b:
print ("this works")
else:
print ("valeur is too high")
这将写2行。
当您尝试使用需要单个标量值的上下文时,numpy
代码会产生错误。 if b:...
只能做一件事。它本身不会遍历b
为每个元素做不同事情的元素。
您也可以将该迭代转换为列表推导,例如
['yes' if b else 'no' for b in np.array([True, False, True])]
答案 3 :(得分:0)
这也应该起作用,并且是对问题的更接近的答案:
for i in range(len(x)):
if valeur.item(i) <= 0.6:
print ("this works")
else:
print ("valeur is too high")