'numpy.ndarray'对象不可调用错误

时间:2013-10-13 18:42:08

标签: pandas

您好我收到以下错误

'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

我不确定如何解决,有人能指出我正确的方向......

3 个答案:

答案 0 :(得分:11)

错误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 :(得分:0)

对于2021年遇到这个问题的每个人来说,有时候你在创建的时候会遇到这个问题 一个与您的函数同名的 numpy 变量,发生的情况是 python 尝试将 numpy 数组作为函数调用而不是调用函数,并且您得到错误,只需更改 numpy 变量的名称

答案 2 :(得分:0)

我遇到了同样的问题并且解决了。

重点是我的函数参数和变量名称相同。 尝试给它们起不同的名字。