Let x
是一个 NumPy 数组。下列:
(x > 1) and (x < 3)
给出错误信息:
ValueError:具有多个元素的数组的真值是
模糊的。使用 a.any() 或 a.all()
我该如何解决?
If a
and b
是布尔 NumPy 数组,&
运算返回它们的元素与:
a & b
返回一个布尔值array。将其简化为单个布尔值value,使用任一
(a & b).any()
or
(a & b).all()
注意:如果a
and b
are 非布尔值数组,考虑(a - b).any()
or (a - b).all()
反而。
基本原理
NumPy 开发人员认为没有一种普遍理解的方法可以在布尔上下文中评估数组:这可能意味着True
if any元素是True
,或者这可能意味着True
if all元素是True
, or True
如果数组的长度非零,仅举三种可能性。
由于不同的用户可能有不同的需求和不同的假设,
NumPy 开发人员拒绝猜测,而是决定提出一个ValueError
每当有人尝试在布尔上下文中计算数组时。正在申请and
到两个 numpy 数组会导致在布尔上下文中评估两个数组(通过调用__bool__
在Python3或__nonzero__
在Python2)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)