С помощью Сципиона.оптимизировать.кривая подходит


Я новичок в scipy и не могу использовать функцию curve_fit. Я думаю, что существует некоторая оболочка данных scipy/numpy, которая должна использоваться для независимых и зависимых наборов данных. WindowCurrent и windowVoltage-это очереди, которые содержат скользящий набор точек из моего набора данных.

Как я могу обернуть список пар ток / напряжение, чтобы избежать этой ошибки?

TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'

Код:

for line in inputFileContents[:maxlen]:
    print line
    timeStamp,voltage,current = line.split(",")
    if windowCurrent == None and windowVoltage == None:
        windowCurrent = deque(current, maxlen)
        windowVoltage = deque(voltage, maxlen)
    else:
        windowCurrent.append(current)
        windowVoltage.append(voltage)

for lineConents in inputFileContents:
    timeStamp,voltage,current = line.split(",")
    windowCurrent.append(current)
    windowVoltage.append(voltage)
    curveList.append([timeStamp, op.curve_fit(logCurve, np.array(list(windowCurrent)), np.array(list(windowVoltage)))])
    curveListPopulate(curveList)

Также: выполнение list(windowCurrent), оставляя обертывание np.array, также возвращает ошибка.

Ссылка на полный текст ошибки

2 2

2 ответа:

Попробуйте преобразовать current и voltage в float, прежде чем добавлять их в windowCurrent и windowVoltage.

Пояснение:

Массивы Numpy могут содержать различные типы данных, а не только числа. В вашем случае это, по-видимому, строковый тип данных: line.split возвращает строки, и таким образом вы получаете массив строк numpy. Очевидно, что вы не можете вычитать строки друг из друга.

Я согласен с silvado, проблема в передаче строковых массивов numpy для curve_fit.

Это может помочь в решении проблемы:

Как преобразовать массив строк в массив поплавков в numpy?