'float' 对象没有属性 'arctan'
'float' object has no attribute 'arctan'
我有如下数据。
data
62600.0
63000.0
62900.0
60400.0
59800.0
代码是
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.sqrt
或 np.arctan
时它会尝试找到对象 [=10= 的相应方法] 而不是调用 numpy 函数。
或者当你不把它作为一个函数使用时它起作用,那一定是因为它在函数中不理解 np
表示包 numpy
。如果您正在使用诸如 jupyter 之类的笔记本,只需在您所在的笔记本中添加 import numpy as np
即可。如果您仅在调用该函数的笔记本中加载 numpy
,它将无法理解np
指的是什么。
我有如下数据。
data 62600.0 63000.0 62900.0 60400.0 59800.0
代码是
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.sqrt
或 np.arctan
时它会尝试找到对象 [=10= 的相应方法] 而不是调用 numpy 函数。
或者当你不把它作为一个函数使用时它起作用,那一定是因为它在函数中不理解 np
表示包 numpy
。如果您正在使用诸如 jupyter 之类的笔记本,只需在您所在的笔记本中添加 import numpy as np
即可。如果您仅在调用该函数的笔记本中加载 numpy
,它将无法理解np
指的是什么。