2016-12-29 57 views
-1

使用a.any()或a.all()假設我有這樣的功能:具有多個元素的數組的真值是不明確的。在python

a = np.array([-2,1,-5,2]) 
if a <0: 
    a += 10 
print (a) 

爲什麼我收到此錯誤。

如果我只傳遞一個值,那麼它是okey。如何解決這個問題呢?

謝謝你提前。

+2

你跟一個整數比較列表,它會給你類型錯誤。這個問題真的不清楚,但是如果你想使用'any'或'all',就像在標題中那樣,使用'if any(a):'或'if all(a):'。請詳細說明你正在嘗試做什麼。 – FlipTack

+1

您正在嘗試將MANY與ONE值進行比較。這不可能。 – Psytho

+0

SO上有很多重複的內容討論這個錯誤信息。 –

回答

2

您可以通過索引用布爾陣列(a < 0)簡單的增加:

a[a < 0] += 10 
4

numpy做元素明智的比較和添加,並矢量化。的if-elsenumpy直接翻譯爲np.where()

import numpy as np 
a = np.where(a < 0, a + 10, a) 
# array([8, 1, 5, 2]) 
相關問題