此错误来自 NumPy。
在 NumPy 中,当你用 比较两个数组时<
,你会得到一个数组,它是元素范围比较的结果——与用 相加两个数组时完全相同+
:
看这个:
>>> a = np.array([1, 2, 3])
>>> b = np.array([2, 2, 2])
>>> a+b
array([3, 4, 5])
>>> a < b
array([True, False, False])
那么,这有什么if
关系array([True, False, False])
呢?这不是真的,也不是假的;它是一组值,有些是真的,有些是假的。这就是为什么 NumPy 会给出一条错误消息,其中确切地说是:The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
.
你必须决定你实际上要在这里测试什么。无论您想要什么,都可能有一种简单的方法来编写它——例如,如果您想知道 的所有值是否a
都小于 的相应值b
,那就是(a < b).all()
。a
但是,如果您想比较例如和b
视为向量的规范,那显然是行不通的。或者,如果您想按字典顺序比较它们,就好像它们是 Python 元组一样。等等。在不知道您可能想要的无限可能含义的情况下,没有人可以告诉您如何编写它。