import numpy as np
from scipy.optimize import curve_fit
x1 = [0.25, 0.33, 0.40, 0.50, 0.60, 0.75, 1.00]
y1 = [1.02, 1.39, 1.67, 1.89, 2.08, 2.44, 2.50]
def mmfunc(x1, d, e):
return d*x1/(e + x1)
y2 = mmfunc(x1,6.0,1.0)
popt, pcov = curve_fit(mmfunc, x1, y1)
我收到此错误
TypeError: can't multiply sequence by non-int of type 'float'
(x1是数组(浮点数),d,e是浮点数)
(我尝试从文件中读取值,打印值(它们是浮点数)...... 我尝试了一个更简单的功能 - 似乎没什么用!)
答案 0 :(得分:4)
问题在于您没有将列表转换为numpy数组,因此您无法添加或乘以标量。这似乎对我有用:
import numpy as np
x1 = np.array([0.25, 0.33, 0.40, 0.50, 0.60, 0.75, 1.00], dtype="float")
y1 = np.array([1.02, 1.39, 1.67, 1.89, 2.08, 2.44, 2.50], dtype="float")
def mmfunc(x1, d, e):
return d*x1/(e + x1)
y2 = mmfunc(x1,6.0,1.0)
(注意:我没有安装scipy
所以我无法检查curve_fit函数是否有效,但转换为np.array
修复了与列表上的算术相关的异常。)