我有一个python代码,如下所示:

...
bestProb=-1;
bestIndex=-1;
prob=np.zeros(numClasses) #numClasses=2
for i in range(0,numClasses):
   prob[i]=findProb(x,weights,b,i)
for i in range(0,numClasses):
   if prob[i]>bestProb:
       bestProb=prob
       bestIndex=i
...


类的数量为2。运行此代码时,出现错误:

File "regression.py", line 19, in predict
if prob[i]>bestProb:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


我知道如果将整个数组与一个数字进行比较会发生此错误,但是在编写prob[i]时不是仅使用一个数字吗?如果我错了,请告诉我该如何解决。谢谢!

另外,请注意,findProb()给出一个数字,而不是一个序列。因此,这也不是任何问题。

编辑:问题出在bestProb=prob。应该是bestProb=prob[i]。对不起,麻烦了。谢谢!

最佳答案

您需要调试Prob[i]变量。尝试在您的print(Prob[i])语句之前添加一个if以观察Prob[i]的内容。有时,它只是一个元素的数组,您只需将其设置为Prob[i][0]。如果那不起作用,那么您需要检查您的逻辑。

关于python - 值错误:具有多个元素的数组的真值不明确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55439433/

10-11 04:02