相关疑难解决方法(0)

Python scipy:**或pow()不支持的操作数类型:'list'和'list'

我需要将函数拟合到数据数组并获得该函数方程的最佳系数.我使用scipy库中的curve_fit方法.它基于最小二乘法.

import numpy as np 
from scipy.optimize import curve_fit

#This is my function from which i need to get optimal coefficients 'a' and 'b'
def func(x, a, b):  
return a*x**(b*x)

#the arrays of input data                               
x = [1,2,3,4,5]
y =[6,7,8,9,10]

#default (guess) coefficients
p0 = [1, 1] 

popt, pcov = curve_fit(func, x, y, p0)
print popt
Run Code Online (Sandbox Code Playgroud)

它返回以下错误

TypeError:**或pow()不支持的操作数类型:'list'和'list'

但是,当我使用另一个更简单的功能而没有电源操作时,它可以工作

def func(x, a, b):  
return a*x + b
Run Code Online (Sandbox Code Playgroud)

它必须尝试将数字增加到整个输入数据阵列的幂

该怎么办?请帮忙...

python scipy

6
推荐指数
1
解决办法
2万
查看次数

scipy.optimize.curve_fit 不支持的操作数类型错误

我正在尝试使用scipy.optimize.curve_fit来拟合模型函数,但以下代码给了我以下错误:

from scipy.optimize import curve_fit
from math import log10

def my_func(x, alpha):
return [10*log10(alpha*y*y) for y in x]

known_x = [1039.885254, 2256.833008, 6428.667969, 30602.62891] #known x-values
known_y = [31.87999916, 33.63000107, 35, 36.74000168]

popt, pcov = curve_fit(my_func, known_x, known_y)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

TypeError: unsupported operand type(s) for -: 'list' and 'list'
Run Code Online (Sandbox Code Playgroud)

我知道已经在这里这里提出相关问题,但我无法从这些答案中解决我的问题。

我没有仔细检查的,该参数的类型curve_fit发送到我的功能,我看到那alpha就会出现,numpy.float64x作为list

谢谢你的帮助。

这是回溯错误:

Traceback (most recent call last):
  File "test.py", line 10, in <module> …
Run Code Online (Sandbox Code Playgroud)

python scipy

3
推荐指数
1
解决办法
1801
查看次数

标签 统计

python ×2

scipy ×2