2014-09-04 110 views
0

從這裏隨訪: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循環都要經過每個值是固定的...但有什麼辦法將其納入更快的代碼?我的數組有成千上萬的元素。

回答

2

該表達

​​3210

相同max(a - a_max, threshold)。如果a是一個numpy數組,則表達式a - a_max < threshold也是如此。您不能在三元運算符Python if-else中使用numpy數組作爲條件表達式,但可以使用np.maximum以元素爲單位計算最大值。所以,你應該能夠

np.maximum(a - a_max, threshold) 

,以取代表達式(npnumpy。)

+0

現在我得到這個錯誤: 'OUT =日誌(總和(EXP(np.minimum(一 - a_max, ) TypeError:sum()不帶關鍵字參數' – user961627 2014-09-04 09:43:57

+0

您必須使用numpy函數:'np.log','np.sum'和'np.exp'。 – 2014-09-04 09:50:03