Я пытаюсь сопоставить и построить простые данные в файле .txt с линейной функцией (a*x+b)
, используя matplotlib и scipy. Я столкнулся с ошибкой, касающейся тестовой функции: "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()
Это ошибка:
Traceback (последний последний вызов):
Файл "C:/Users/Fra/Desktop/lab/ottica/2/reaqd.py", строка 19, в plt.plot(x_data, test_func(x_data, params[0], params[1]), label=' Подогнанная функция')
Файл "C:/Users/Fra/Desktop/lab/ottica/2/reaqd.py", строка 14, в test_func возвращает a*x+b
TypeError: невозможно умножить последовательность на не-int типа 'numpy.float64'