2013-10-13 54 views
0

您好我正在以下錯誤「numpy.ndarray」對象不是可調用錯誤

「numpy.ndarray」對象不是可調用

以下面的方式執行計算時

rolling_means = pd.rolling_mean(prices,20,min_periods=20)` 
rolling_std = pd.rolling_std(prices, 20)` 

#print rolling_means.head(20) 
upper_band = rolling_means + (rolling_std)* 2 
lower_band = rolling_means - (rolling_std)* 2 

我不知道如何解決,有人可以指出我正確的方向......

回答

10

錯誤TypeError: 'numpy.ndarray' object is not callable意味着你試圖調用一個numpy數組作爲一個函數。我們可以重現錯誤,像這樣在REPL:

In [16]: import numpy as np 

In [17]: np.array([1,2,3])() 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
/home/user/<ipython-input-17-1abf8f3c8162> in <module>() 
----> 1 np.array([1,2,3])() 

TypeError: 'numpy.ndarray' object is not callable 

如果我們假設誤差確實是從的代碼,您的評論(東西,你應該檢查,)的片斷來,那麼你必須重新分配或者pd.rolling_meanpd.rolling_std與代碼中較早的一個numpy數組。

我的意思是這樣的:

In [1]: import numpy as np 

In [2]: import pandas as pd 

In [3]: pd.rolling_mean(np.array([1,2,3]), 20, min_periods=5) # Works 
Out[3]: array([ nan, nan, nan]) 

In [4]: pd.rolling_mean = np.array([1,2,3]) 

In [5]: pd.rolling_mean(np.array([1,2,3]), 20, min_periods=5) # Doesn't work anymore... 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
/home/user/<ipython-input-5-f528129299b9> in <module>() 
----> 1 pd.rolling_mean(np.array([1,2,3]), 20, min_periods=5) # Doesn't work anymore... 

TypeError: 'numpy.ndarray' object is not callable 

所以,基本上你需要搜索你的代碼的其餘部分pd.rolling_mean = ...和/或pd.rolling_std = ...看到這裏你可能已經覆蓋他們。


另外,如果你願意,你可以把 reload(pd)只是你的代碼段,這應該能讓它恢復的 pd什麼您最初導入它的值運行之前,但我仍然 強烈推薦你試圖找到你可能已經重新分配給定功能的地方。

+1

謝謝,你剛剛保存了我的項目。 – codewarrior

相關問題