在我看来,问题确实在于如何导入数据。伪造此数据文件:
$:~/temp$ cat data.dat
1.0 2.0
2.0 4.2
3.0 8.4
4.0 16.1
并使用pylab
的loadtxt
功能进行读取:
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import scipy as sy
import pylab as plb
data = plb.loadtxt('data.dat')
x = data[:,0]
y= data[:,1]
def func(x, a, b, c):
return a*x**b + c
p0 = sy.array([1,1,1])
coeffs, matcov = curve_fit(func, x, y, p0)
yaj = func(x, coeffs[0], coeffs[1], coeffs[2])
print(coeffs)
print(matcov)
plt.plot(x,y,'x',x,yaj,'r-')
plt.show()
为我工作。顺便说一句,您可以使用dtypes命名列。