curve_fit python函数调用不是正确的浮点数组

curve_fit python函数调用不是正确的浮点数组,python,Python,当我尝试在Python中运行curve_fit时,我收到下面代码的以下错误。“函数调用不是正确的浮点数组”。我读到这可能是由于没有输入数组造成的,所以我将我的列表转换为数组,但仍然得到相同的错误 #Calculate initial price def initial_price(stocks, V, T, M, N, K, r): dt = float(T)/M for i in range(M - 1, 0, -1): #Define x data xdat

当我尝试在Python中运行curve_fit时,我收到下面代码的以下错误。“函数调用不是正确的浮点数组”。我读到这可能是由于没有输入数组造成的,所以我将我的列表转换为数组,但仍然得到相同的错误

#Calculate initial price
def initial_price(stocks, V, T, M, N, K, r):
  dt = float(T)/M
  for i in range(M - 1, 0, -1): 
      #Define x data
      xdata = list()
      for k in range(0, N):
        xdata.append(stocks[k * M + (i - 1)])
      #Convert list into array
      xdata = np.asarray(xdata)
      #Define y data
      ydata = list()
      for k in range(0, N): 
        ydata.append(exp(-r * dt) * V[k * M + i])
      #Convert list into array
      ydata = np.asarray(ydata)
      #get optimal values
      popt, pcov = curve_fit(cubic, xdata, ydata)
      for k in range(0, N): 
        V[k * M + (i - 1)] = \
        max(C_payoff(stocks[k * M + (i - 1)], 
        cubic(stocks[k * M + (i - 1)], popt[0], 
        popt[1], popt[2], popt[3])))
  #Compute initial price as discounted weighted average
  #over initial prices for all paths
  sum = 0.0
  for k in range(0, N): 
    sum = sum + V[k * M]
  V0 = exp(-r * dt) * (1.0/N) * sum
  return V0





#Define a cubic polynomial function 
def cubic(x, a0, a1, a2, a3): 
  return a0 + a1*x + a2 * x ** 2 + a3 * x ** 3

请修复缩进并提供
cubic
功能您还需要从
asarray
分配返回的对象:
ydata=np.asarray(ydata)
。@xnx我按照您的建议编辑了它。@xnx,我已经完成了分配,但它仍然不起作用。下一步要做的是发布错误的完整回溯,并检查
xdata
ydata
进入
曲线拟合
调用的形状。