我正在根据我的问题改编一个和我一起学习的人的代码。
这是他的代码:
if not((paux1 == paux2).all()):
pop[int(saidaFO[pos,0]),:] = paux2
pos -= 1
Run Code Online (Sandbox Code Playgroud)
它有效,当我打印时,我得到了 paux1 的结果:[-2.3668 1.3174]。我正在解决另一个问题,就我而言,当我打印 paux1 时,我有这个: [0.2107491848569726, 443, 3]
所以,当我尝试做同样的比较时:
if not((paux1 == paux2).all()):
我收到此错误:“AttributeError:'bool'对象没有属性'all'”我不明白发生了什么事......有人可以帮助我吗?我不太明白 .all() 是如何工作的...也许等效的代码可以工作...
在你的代码中,paux1和paux2可能是 numpy 数组,因此paux1 == paux2返回一个表示布尔值的数组(无论测试的相等性是 true 还是 false),并且该数组确实有一个.all()方法。
听起来您正在使用列表,因此paux1 == paux2不会像 numpy 数组那样逐个比较元素。您仅检查两个列表是否相等,并返回一个布尔值。这个布尔值没有.all()方法,这就是导致你的错误的原因。
预先将值列表转换为 numpy 数组,错误应该得到修复。
paux1 = np.array(paux1)
paux2 = np.array(paux2)
Run Code Online (Sandbox Code Playgroud)
另一个错误来源是两个 np.array 的形状不同。例如:
(np.array([[1,1]])==np.array([1,2,3])).all()
Run Code Online (Sandbox Code Playgroud)
返回:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-400-ea9825114062> in <module>
----> 1 (np.array([[1,1]])==np.array([1,2,3])).all()
AttributeError: 'bool' object has no attribute 'all'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58073 次 |
| 最近记录: |