ValueError: операнды не могут транслироваться вместе с фигурами (8,) (2,) Curve_fit ()

Я использую код, в котором у меня 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

Каковы формы входных массивов?

Mad Physicist 17.12.2018 13:34

Вам не нужна вторая петля на «j». Замените [height [i] [j], height [i] [j + 1]] на [height [i], height [i + 1]].

T.Lucas 17.12.2018 13:45

@ T.Lucas Я редактировал свой вопрос, высота - это 2D-массив

Wouter Blokland 17.12.2018 13:48

@MadPhysicist Я поставил вопрос, но высота 18x8 и длина волны 1D с длиной 8

Wouter Blokland 17.12.2018 14:07

Чего вы пытаетесь достичь с помощью двух петель?

Mad Physicist 17.12.2018 19:55

Высота скважины - 2D, и каждая ее строка содержит определенный набор данных для высоты. Таким образом, каждая строка высоты представляет собой ряд измерений, которые принадлежат друг другу, и я хочу подогнать линейную функцию между каждыми двумя последующими точками строки, но, похоже, не могу читать данные таким образом .. Итак, я хочу, чтобы она соответствовала для высоты [i] [j] и высоты [i] [j + 1], а затем для высоты [i] [j + 1] и высоты [i] [j + 2], ... и это для каждой строки, следовательно две петли ...

Wouter Blokland 18.12.2018 08:59

Я думаю, что обнаружил свою ошибку, она в том, что я пытаюсь подогнать две точки данных ко всему массиву длин волн, который имеет len 8, так что это так.

Wouter Blokland 18.12.2018 09:09
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
88
0

Другие вопросы по теме