arange
генерирует списки (ну, numpy массивы);введите help(np.arange)
для деталей.Вам не нужно вызывать его в существующих списках.
>>> x = [1,2,3,4]
>>> y = [3,5,7,9]
>>>
>>> m,b = np.polyfit(x, y, 1)
>>> m
2.0000000000000009
>>> b
0.99999999999999833
Я должен добавить, что я склонен использовать poly1d
здесь, а не записывать "m * x + b" и эквиваленты более высокого порядкапоэтому моя версия вашего кода будет выглядеть примерно так:
import numpy as np
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [3,5,7,10] # 10, not 9, so the fit isn't perfect
fit = np.polyfit(x,y,1)
fit_fn = np.poly1d(fit)
# fit_fn is now a function which takes in x and returns an estimate for y
plt.plot(x,y, 'yo', x, fit_fn(x), '--k')
plt.xlim(0, 5)
plt.ylim(0, 12)