С помощью Сципиона.оптимизировать.кривая подходит
Я новичок в 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 ответа:
Попробуйте преобразовать
current
иvoltage
вfloat
, прежде чем добавлять их вwindowCurrent
иwindowVoltage
.Пояснение:
Массивы Numpy могут содержать различные типы данных, а не только числа. В вашем случае это, по-видимому, строковый тип данных:line.split
возвращает строки, и таким образом вы получаете массив строк numpy. Очевидно, что вы не можете вычитать строки друг из друга.