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

(我尝试从文件中读取值,打印值(它们是浮点数)......我尝试了一个更简单的函数 - 似乎没有任何效果!)

4

1 回答 1

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

于 2013-09-07T00:45:14.827 回答