'float' 对象没有属性 'arctan'

'float' object has no attribute 'arctan'

  1. 我有如下数据。

     data                                                            
     62600.0    
     63000.0    
     62900.0    
     60400.0    
     59800.0
    
  2. 代码是

       def Simplify(G_x,data):
           data['dx'] = data*G_x 
           data['dy'] = data - data.shift(1)
           data = data.fillna(0)
           data['G_mag'] = np.sqrt((data['dx']+data['dy'])*(data['dx']+data['dy'])-2*data['dx']*data['dy']) 
           data['Theta'] = np.arctan(data['dy']/data['dx'])
           data = data.fillna(0) 
           data['Theta']=0
           data.loc[data['Theta']<0,'Theta'] = data['Theta']+2*np.pi
           data.loc[(data['Theta']<=np.pi/8) & (data['Theta']>=0), 'Theta'] = np.arctan(0)
           data.loc[(data['Theta']<=3*np.pi/8) & (data['Theta']>1*np.pi/8), 'Theta'] = np.arctan(1)
           data.loc[(data['Theta']<=np.pi) & (data['Theta']>3*np.pi/8), 'Theta'] = np.arctan(2)
           data.loc[(data['Theta']<=13*np.pi/8) & (data['Theta']>np.pi), 'Theta'] = np.arctan(-2)
           data.loc[(data['Theta']<=15*np.pi/8) & (data['Theta']>13*np.pi/8), 'Theta'] = np.arctan(-1)
           data.loc[(data['Theta']>15*np.pi/8) & (data['Theta']<=2*np.pi), 'Theta'] = np.arctan(0)
           data['New_dy'] = data['dx']*np.tan(data['Theta'])
           data['N_AC']=data['New_dy'].cumsum()+data['Adj Close'][0]
           return data['N_AC']
    

3.Error 消息是

           'float' object has no attribute 'arctan'
           'float' object has no attribute 'sqrt'

4。当我直接 运行 这段代码时,不使用函数。它运作良好。 有什么好的方法可以解决这个问题。谢谢!

你可能在某处创建了一个名为 np 的全局变量,这样当你写 np.sqrtnp.arctan 时它会尝试找到对象 [=10= 的相应方法] 而不是调用 numpy 函数。

或者当你不把它作为一个函数使用时它起作用,那一定是因为它在函数中不理解 np 表示包 numpy。如果您正在使用诸如 jupyter 之类的笔记本,只需在您所在的笔记本中添加 import numpy as np 即可。如果您仅在调用该函数的笔记本中加载 numpy ,它将无法理解np 指的是什么。