1 回答
TA贡献1866条经验 获得超5个赞
您在这里遇到的问题是,numpy 不会将 for s 定义为比较,而是一种构造“逻辑”数组的方法。__eq__np.array
考虑以下数组:
some_array = np.array([1, 2, 3, 4])
您期望的价值是多少?通常在Python中,我们希望它是 ,但在numpy中并非如此:some_array == some_arrayTrue
>>> some_array == some_array
array([True, True, True, True])
与 s 一起使用不是布尔值,而是产生另一个 .如果我们尝试将此数组视为布尔值,则会出现您遇到的错误:==np.arraynp.array
>>> bool(some_array)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
这里弹出此错误,因为检查对象是否包含在 a 中涉及迭代每个元素并将其与相关对象进行比较。在每一步中,python调用该方法,然后在收到数组而不是.collections.dequedequenp.array.__eq__bool
要缓解此问题,您需要手动搜索 有问题的数组,而不是依赖运算符。这可以通过将 any 内置功能应用于执行元素比较的生成器来完成:dequein
new_array = np.array([i,j])
if not any((new_array == elem).all() for elem in dequeList)):
...
添加回答
举报