1

我是 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

有人可以帮我吗?

4

1 回答 1

1

您所ValueError看到的来自 NumPy:每当您尝试在布尔上下文中评估数组时(即,将该数组解释为真或假),都会发生这种情况。有一些与以前的 StackOverflow 问题和答案有些相关的问题。例如,请参阅答案。

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

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

于 2013-11-07T21:45:54.403 回答