Вопрос по МНК в NumPy
Собственно, надо с помощью МНК и тестового датасета (один - положение пика, другой - размер) вычислить размеры пиков с других каналов. Есть такой код:
from numpy import polyfit, polyval
a = [1589, 1749, 1915, 2082, 2196, 2247, 2416, 2577, 2740, 2900, 3013, 3061, 3222, 3300, 3382, 3542, 3704, 3817, 3863, 4023, 4180, 4339, 4496, 4607, 4653, 4810, 4963, 5116, 5266, 5370, 5413, 5562, 5705, 5846, 5983]
b = [40, 60, 80, 100, 114, 120, 140, 160, 180, 200, 214, 220, 240, 250, 260, 280, 300, 314, 320, 340, 360, 380, 400, 414, 420, 440, 460, 480, 500, 514, 520, 540, 560, 580, 600]
coeffs = polyfit(a, b, 2)
c = [3648, 3656, 3671, 3678]
d = polyval(coeffs, c)
print(d)
При запуске он работает правильно и выводит
[292.45662586 293.46364392 295.35247158 296.23422302]
НО! В мануале к функциям значится, что предпочителен новый API numpy.polynomial. Пробую переписать в соответствии с этим API:
from numpy.polynomial.polynomial import Polynomial, polyval
a = [1589, 1749, 1915, 2082, 2196, 2247, 2416, 2577, 2740, 2900, 3013, 3061, 3222, 3300, 3382, 3542, 3704, 3817, 3863, 4023, 4180, 4339, 4496, 4607, 4653, 4810, 4963, 5116, 5266, 5370, 5413, 5562, 5705, 5846, 5983]
b = [40, 60, 80, 100, 114, 120, 140, 160, 180, 200, 214, 220, 240, 250, 260, 280, 300, 314, 320, 340, 360, 380, 400, 414, 420, 440, 460, 480, 500, 514, 520, 540, 560, 580, 600]
coeffs = Polynomial.fit(a, b, 2)
c = [3648, 3656, 3671, 3678]
d = polyval(c, coeffs)
print(d)
И получаю выхлоп:
[Polynomial([309.86246448, 277.69372744, 9.356855 ], domain=[1589., 5983.], window=[-1., 1.], symbol='x')
Polynomial([309.86246448, 277.69372744, 9.356855 ], domain=[1589., 5983.], window=[-1., 1.], symbol='x')
Polynomial([309.86246448, 277.69372744, 9.356855 ], domain=[1589., 5983.], window=[-1., 1.], symbol='x')
Polynomial([309.86246448, 277.69372744, 9.356855 ], domain=[1589., 5983.], window=[-1., 1.], symbol='x')]
И вроде всё по мануалу, вроде всё окей. Что я сделал не так и как исправить и получить нормальный вывод значений?
Заранее спасибо!