任何或全部的python valuetype错误
我是python新手,遇到以下错误:任何或全部的python valuetype错误,python,Python,我是python新手,遇到以下错误: while (E_old != E_new) and self.num_iter < 42: while(E_old!=E_new)和self.num_iter
while (E_old != E_new) and self.num_iter < 42:
while(E_old!=E_new)和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
while(E_old!=E_new)和(self.num_iter<42)。所有人:但它仍然给出了一个问题
有人能帮我吗?您看到的
ValueError
来自NumPy:每当您尝试在布尔上下文中计算数组时(即,将该数组解释为true或false),就会发生此错误。
这里有一些有点相关的问题和答案。参见答案示例
在这种情况下,问题似乎是E_old
或E_new
(或两者都可能)是一个NumPy数组。表达式E_old!=E_new
是一个布尔数组,NumPy拒绝猜测如何在布尔上下文中解释它。如果更换E_old!=E_new
在表达式中使用(E_old!=E_new)。任何()
,您都会看到问题消失。表达式(E_old!=E_new)。如果E_old
的任何组件与E_new
的相应组件不同,则any()
将为真。如果E_old
和E_new
完全匹配,则表达式将为false
注意:您可能还需要查看该方法。您看到的
ValueError
来自NumPy:每当您尝试在布尔上下文中计算数组时(即,将该数组解释为true或false),就会发生该错误。
这里有一些有点相关的问题和答案。参见答案示例
在这种情况下,问题似乎是E_old
或E_new
(或两者都可能)是一个NumPy数组。表达式E_old!=E_new
是一个布尔数组,NumPy拒绝猜测如何在布尔上下文中解释它。如果更换E_old!=E_new
在表达式中使用(E_old!=E_new)。任何()
,您都会看到问题消失。表达式(E_old!=E_new)。如果E_old
的任何组件与E_new
的相应组件不同,则any()
将为真。如果E_old
和E_new
完全匹配,则表达式将为false
注意:您可能还想看看这个方法。E_old和
E_new
是什么样子的?试着用(E_old!=E_new)
替换(E_old!=E_new)。any()
E_old=-1和E_new=10000000000000000000000000000000000000000000hmm。什么是类型(旧版)
和类型(新版)
?不,我不相信如果行while(E_old!=E_new)和self.num_iter<42:
生成该错误消息,则执行该行时,E_old
、E_new
和self.num_iter
中至少有一个是一个numpy数组。请尝试替换(E_old!=E_new)
带有(E_old!=E_new)。any()
E_old=-1和E_new=1000000000000000000000000000000000hmm。什么是类型(旧版)
和类型(新版)
?不,我不相信如果行while(E_old!=E_new)和self.num_iter<42:
生成该错误消息,那么在执行该行时,E_old
、E_new
和self.num_iter
中至少有一个是numpy数组。是的,我尝试了此操作并得到以下错误:while(E_old!=E_new)。any()和self.num_iter<42:AttributeError:“bool”对象没有属性“any”好的。从你的问题来看,我猜有某种迭代和收敛测试正在进行。是否有可能E_old
和E_new
开始时是常规标量,但在以后的迭代中会变成数组?因此,如果E_old
和E_new
都是标量,那么您的原始代码就应该可以了。如果其中一个是数组,则需要.all()
。如果他们正在更改类型,那么如果可能的话,您可能需要考虑重新编写代码;如果不可能,条件将需要更复杂,以适应标量和数组情况。是的,我尝试了此操作并得到以下错误:while(E_old!=E_new)。any()和self.num_iter<42:AttributeError:'bool'对象没有属性'any'好的。从你的问题来看,我猜有某种迭代和收敛测试正在进行。是否有可能E_old
和E_new
开始时是常规标量,但在以后的迭代中会变成数组?因此,如果E_old
和E_new
都是标量,那么您的原始代码就应该可以了。如果其中一个是数组,则需要.all()
。如果他们正在更改类型,那么如果可能的话,您可能需要考虑重新编写代码;如果不可能,条件将需要更加复杂,以适应标量和数组情况。