我是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
有人可以帮我吗?
答案 0 :(得分:1)
您看到的ValueError
来自NumPy:只要您尝试在布尔上下文中计算数组(即将该数组解释为true或false),就会发生这种情况。
之前有一些与之相关的StackOverflow问题和答案。例如,请参阅this答案。
在这种情况下,似乎问题可能是E_old
或E_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_old
和E_new
完全匹配,则表达式将为false。
注意:您可能还想查看allclose
方法。