价值错误:真值暧昧

时间:2014-09-04 09:31:50

标签: python numpy conditional

从此处跟进:Conditional calculation in python

我正在编辑这一行:

 out = log(sum(exp(a - a_max), axis=0))

来自第85行:https://github.com/scipy/scipy/blob/v0.14.0/scipy/misc/common.py#L18

到此:

out = log(sum(exp(threshold if a - a_max < threshold else a - a_max), axis = 0))

但我收到以下错误:

out = log(sum(exp(threshold if a - a_max < threshold else a - a_max), axis=0)) ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我可以从this回答看到错误可以使用for循环来修复每个值...但是有没有办法将它合并到更快的代码中?我的阵列有数万个元素。

1 个答案:

答案 0 :(得分:2)

此表达式

threshold if a - a_max < threshold else a - a_max

max(a - a_max, threshold)相同。如果a是一个numpy数组,那么表达式a - a_max < threshold也是如此。您不能将numpy数组用作Python if-else三元运算符中的条件表达式,但您可以使用np.maximum以元素方式计算最大值。所以你应该能够用

替换那个表达式
np.maximum(a - a_max, threshold)

npnumpy。)