2013-10-13 51 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

相关问题