Solution to Error: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Solution to Error: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我有一个函数,我使用条件 if 语句为 return 值计算两个浮点值,如下所示:
# The function inputs are 2 lists of floats
def math(list1,list2):
value1=math(...)
value2=more_math(...)
z=value2-value1
if np.any(z>0):
return value1
elif z<0:
return value2
最初,我运行入题错误。我已经尝试使用 np.any() 和 np.all() 作为错误和问题的建议,但没有成功。我正在寻找一种方法来显式分析从 if 语句 if z>0 生成的布尔数组的每个元素(例如 [True,False] for list w/ 2 elements),如果甚至有可能。如果我使用 np.any(),当输入列表不是这种情况时,它始终是 returning value1。我的问题与 The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()? 类似,但没有人回答。
如果z
是数组
z=value2-value1
if np.any(z>0):
return value1
elif z<0:
return value2
z>0
和 z<0
将是布尔数组。 np.any(z>0)
将该数组减少为一个 True/False 值,这在 if
语句中有效。但是 z<0
仍然是多值的,并且 elif
很头疼。
这是一个简单的例子:
a = np.array([1,2,3,4]) #for simplicity
b = np.array([0,0,5,5])
c = b.copy()
condition = a>b #returns an array with True and False, same shape as a
c[condition] = a[condition] #copy the values of a into c
Numpy 数组可以通过 True
和 False
进行索引,这也允许覆盖保存在这些索引中的值。
注意:b.copy()
很重要,否则您在 b
中的条目也会发生变化。 (最好是你在没有 copy()
的情况下尝试一次,然后看看 b
会发生什么
我有一个函数,我使用条件 if 语句为 return 值计算两个浮点值,如下所示:
# The function inputs are 2 lists of floats
def math(list1,list2):
value1=math(...)
value2=more_math(...)
z=value2-value1
if np.any(z>0):
return value1
elif z<0:
return value2
最初,我运行入题错误。我已经尝试使用 np.any() 和 np.all() 作为错误和问题的建议,但没有成功。我正在寻找一种方法来显式分析从 if 语句 if z>0 生成的布尔数组的每个元素(例如 [True,False] for list w/ 2 elements),如果甚至有可能。如果我使用 np.any(),当输入列表不是这种情况时,它始终是 returning value1。我的问题与 The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()? 类似,但没有人回答。
如果z
是数组
z=value2-value1
if np.any(z>0):
return value1
elif z<0:
return value2
z>0
和 z<0
将是布尔数组。 np.any(z>0)
将该数组减少为一个 True/False 值,这在 if
语句中有效。但是 z<0
仍然是多值的,并且 elif
很头疼。
这是一个简单的例子:
a = np.array([1,2,3,4]) #for simplicity
b = np.array([0,0,5,5])
c = b.copy()
condition = a>b #returns an array with True and False, same shape as a
c[condition] = a[condition] #copy the values of a into c
Numpy 数组可以通过 True
和 False
进行索引,这也允许覆盖保存在这些索引中的值。
注意:b.copy()
很重要,否则您在 b
中的条目也会发生变化。 (最好是你在没有 copy()
的情况下尝试一次,然后看看 b