Я использую код, в котором у меня 2 массива. Эти массивы затем используются для подгонки функции к содержащимся в них данным. Я хочу попробовать сделать линейную аппроксимацию для всех соседних точек, например:
if
x = [1,2,3,4,5]
y = [10, 15, 65, 123, 200]
Затем я хочу подгонку между 10-15 (1-2), 15-65 (2-3), 65-123 (3-4), ...
Когда я пробую это со своим кодом:
for i in range(0, len(height)):
for j in range(0, len(height[i])-1):
popt, pcov = curve_fit(fitfunc, wavelengths, [height[i][j],height[i][j+1]])
С помощью fitfunc:
def fitfunc(x, a, b):
return a*x + b
Я получаю указанную выше ошибку. Есть предложения или комментарии?
Высота PS имеет размер 18x8, а длины волн представляют собой одномерный массив длиной 8
Вам не нужна вторая петля на «j». Замените [height [i] [j], height [i] [j + 1]] на [height [i], height [i + 1]].
@ T.Lucas Я редактировал свой вопрос, высота - это 2D-массив
@MadPhysicist Я поставил вопрос, но высота 18x8 и длина волны 1D с длиной 8
Чего вы пытаетесь достичь с помощью двух петель?
Высота скважины - 2D, и каждая ее строка содержит определенный набор данных для высоты. Таким образом, каждая строка высоты представляет собой ряд измерений, которые принадлежат друг другу, и я хочу подогнать линейную функцию между каждыми двумя последующими точками строки, но, похоже, не могу читать данные таким образом .. Итак, я хочу, чтобы она соответствовала для высоты [i] [j] и высоты [i] [j + 1], а затем для высоты [i] [j + 1] и высоты [i] [j + 2], ... и это для каждой строки, следовательно две петли ...
Я думаю, что обнаружил свою ошибку, она в том, что я пытаюсь подогнать две точки данных ко всему массиву длин волн, который имеет len 8, так что это так.
Каковы формы входных массивов?