从此处跟进: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循环来修复每个值...但是有没有办法将它合并到更快的代码中?我的阵列有数万个元素。
答案 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)
(np
是numpy
。)