任何或所有的python valuetype错误

时间:2013-11-07 21:32:20

标签: python

我是python的新手,我收到以下错误:

   while (E_old != E_new) and self.num_iter < 42:

ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

我试图使用:

while (E_old != E_new) and (self.num_iter < 42).all: but it still gave an issue

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

您看到的ValueError来自NumPy:只要您尝试在布尔上下文中计算数组(即将该数组解释为true或false),就会发生这种情况。 之前有一些与之相关的StackOverflow问题和答案。例如,请参阅this答案。

在这种情况下,似乎问题可能是E_oldE_new(或可能两者)都是NumPy数组。表达式E_old != E_new则是一个布尔数组,NumPy拒绝猜测如何在布尔上下文中解释它。如果您使用E_old != E_new替换表达式中的(E_old != E_new).any(),您应该会看到问题消失。如果(E_old != E_new).any()任何组件与E_old的相应组件不同,则表达式E_new将为true。如果E_oldE_new完全匹配,则表达式将为false。

注意:您可能还想查看allclose方法。