0

我是 python 新手,不确定如何使用 NumPy 修复以下错误:

if (energy < min_energy):
    min_energy = energy;
    min_pos_current = c;
    min_pos_previous = p;

if (energy < min_energy):
ValueError: The truth value of an array with more than one element is 
ambiguous. Use a.any() or a.all()

有人可以帮我解决这个问题吗?

4

1 回答 1

4

此错误来自 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 元组一样。等等。在不知道您可能想要的无限可能含义的情况下,没有人可以告诉您如何编写它。

于 2013-11-06T20:42:43.133 回答