Python spo.optimize:只有整数、切片(:)、省略号(…)、numpy.newaxis(无)以及整数或布尔数组是有效的索引
result=spo.minimize(min1,line,args=(df1),method='SLSQP',options={'disp':True}) 我得到一个错误,如下所示:Python spo.optimize:只有整数、切片(:)、省略号(…)、numpy.newaxis(无)以及整数或布尔数组是有效的索引,python,numpy,scipy,Python,Numpy,Scipy,result=spo.minimize(min1,line,args=(df1),method='SLSQP',options={'disp':True}) 我得到一个错误,如下所示: df = pd.read_csv("loc.csv",index_col=['Date'],na_values=['NA'], parse_dates=True) dates = pd.date_range('2010-01-01','2010-12-31') sym
df = pd.read_csv("loc.csv",index_col=['Date'],na_values=['NA'],
parse_dates=True)
dates = pd.date_range('2010-01-01','2010-12-31')
symbols = ['AAPL','GOOG']
df1= df.ix[dates,symbols]
df1=df1.dropna(how='all')
line = [.5,0]
def min1 (df1,l ):
err= np.sum( (df1['GOOG']-(df1['AAPL']*l[0]+l[1]))**2 )
return err
任何帮助都将不胜感激。谢谢 该错误意味着某个浮点或数组(或列表)变量正在索引角色中使用;i、 它不应该在某个地方 虽然我必须更仔细地研究您的代码,但首先吸引我注意的是
(df)
。这应该是元组,并且需要逗号:
only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
如果这个简单的修复方案不起作用,请提供更多的错误堆栈,以便我们更好地了解问题发生的位置
这个能跑吗
args= (df1,)
函数的第一个参数是“自由变量”,即minimize
可变的变量,从x0
值(line
)开始。args
参数在不改变的情况下提供添加的参数
给定初始值,
line=[.5,0]
,实际调用了min1
(第一次使用
min1(line, df1)
但是在min1
中,您使用字符串索引第一个参数,就好像它是一个Pandas对象,而不是一个简单的2元素数组
min1(np.array([.5,0]), df1)
这可能就是产生错误的原因
因此,问题的根源是混淆了min1
的参数顺序,并混淆了数组和数据帧。感谢您的回复..min1(line,df1)…这起作用了..在函数“l”中是一个2元素系列,df1是一个熊猫..我不清楚您的评论“混淆数组和数据帧”。请解释
df1['GOOG'] # here df1 is the initial array, not the dataframe