python - curve_fit - 非int / float错误

时间:2013-09-07 00:32:14

标签: python scipy

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是浮点数)

(我尝试从文件中读取值,打印值(它们是浮点数)...... 我尝试了一个更简单的功能 - 似乎没什么用!)

1 个答案:

答案 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修复了与列表上的算术相关的异常。)