python - ValueError : The truth value of an array

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()

我该如何解决这个问题?

最佳答案

如果 ab是 bool NumPy 数组,&操作返回它们的元素和:

a & b

返回一个 bool 数组。要将其减少为单个 bool ,请使用任一

(a & b).any()

(a & b).all()

注意:如果 ab非 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/

相关文章:

python - 更改 pandas DataFrame 中的特定列名

linux - 如何检测网线/连接器的物理连接状态?

c - 编写程序以处理导致 Linux 上丢失写入的 I/O 错误

linux - 您可以将 Amazon EBS 附加到多个实例吗?

django - 在 Django 中处理一页上的多个表单的正确方法

python - Python SciPy 需要 BLAS 吗?

python - Django CSRF 检查因 Ajax POST 请求而失败

linux - 从文件列表中获取输入的 Tar 归档

linux - 当程序具有命令行参数时,如何使用 GDB 分析程序的核心转储文件?

python - 在 scikit-learn 中将分类器保存到磁盘