2014-02-19 45 views
0

我想將使用lambda關鍵字定義的函數傳遞給繪圖函數,但是我得到了TypeError消息。相關一張我的代碼是這樣的:這是什麼意思 - TypeError:只有長度爲1的數組可以轉換爲Python標量?

y = lambda z: dot_epsilon(z) * (math.exp(-tau(z))/H_z(z).value) 
plot(y,100, 5e6) 

def plot(function, min_x, max_x): 
    t = np.logspace(min_x, max_x, 1000) 
    s = function(t) 
    plt.plot(t, s, 'b-', lw=2) 

我收到此錯誤信息:

File "mucalc.py", line 160, in <lambda> 
    y = lambda z: dot_epsilon(z) * (math.exp(-tau(z))/H_z(z).value) 
TypeError: only length-1 arrays can be converted to Python scalars 

Whay這是否類型錯誤在這種情況下代表什麼嗎?

回答

4

您正在使用math.exp,它只接受浮點數。改爲使用np.exp

這是因爲math.exp(x)改掉打電話x.__float__(),如果xnp.ndarray,它的__float__實現這樣的事情:

def __float__(self): 
    if len(self) is 1: 
     return self.flatten()[0] 
    else: 
     raise TypeError, 'only length-1 arrays can be converted to Python scalars' 
相關問題