您好我收到以下错误
'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
我不确定如何解决,有人能指出我正确的方向......
答案 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_mean
或pd.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)
我遇到了同样的问题并且解决了。
重点是我的函数参数和变量名称相同。 尝试给它们起不同的名字。