让 x
是一个 NumPy 数组。以下:
(x > 1) and (x < 3)
给出错误信息:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我该如何解决这个问题?
最佳答案
如果 a
和 b
是 bool NumPy 数组,&
操作返回它们的元素和:
a & b
返回一个 bool 数组。要将其减少为单个 bool 值,请使用任一
(a & b).any()
或
(a & b).all()
注意:如果 a
和 b
是 非 bool 数组,考虑 (a - b).any()
或 (a - b).all()
而是。
NumPy 开发人员认为没有一种普遍理解的方法来评估 bool 上下文中的数组:它可能意味着 True
如果 任何 元素是 True
, 或者它可能意味着 True
如果所有元素都是True
, 或 True
如果数组的长度不为零,仅列举三种可能性。
由于不同的用户可能有不同的需求和不同的假设,因此
NumPy 开发人员拒绝猜测,而是决定提出 ValueError
每当尝试在 bool 上下文中评估数组时。申请and
到两个 numpy 数组会导致在 bool 上下文中计算两个数组(通过在 Python3 中调用 __bool__
或在 Python2 中调用 __nonzero__
)。
关于python - ValueError : The truth value of an array with more than one element is ambiguous. 使用 a.any() 或 a.all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062954/