小编Fra*_*ini的帖子

由于“无法将序列乘以‘numpy.float64’类型的非 int”错误而无法拟合数据

我正在尝试使用 matplotlib 和 scipy 使用线性函数在 .txt 文件中拟合并绘制简单数据(a*x+b)。我遇到了有关测试功能的错误:"can't multiply sequence by non-int of type 'numpy.float64'"

我尝试过更改变量名称x,但遇到了同样的问题。大多数代码来自一个工作代码,该代码能够毫无问题地拟合数据,并对测试函数使用相同的定义。

import matplotlib.pyplot as plt
from scipy import optimize
import numpy as np
f=open("testData.txt","r")
x_data=[]
y_data=[]
trash=f.readline() #discards first line
for line in f: #reads x and y data from file
    x_read,y_read=line.split()
    x_data.append(float(x_read))
    y_data.append(float(y_read))

def test_func(x, a, b):
    return a*x+b

params, params_covariance = optimize.curve_fit(test_func, x_data, y_data, 
p0=[1, 1])
plt.figure(figsize=(6, 4))
plt.scatter(x_data, y_data)
plt.plot(x_data, test_func(x_data, params[0], params[1]), label='Fitted 
function')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是错误:

回溯(最近一次调用最后一次): …

python matplotlib scipy data-fitting function-fitting

3
推荐指数
1
解决办法
6280
查看次数