Python 元组的多值

Python 元组的多值,python,numpy,tuples,approximation,Python,Numpy,Tuples,Approximation,我对python中的近似有问题。 我有一个函数,它给了我一个带结果的dict。例如{1:0.5,2:0.25}。这意味着f(1)==0.5,f(2)==0.25,等等 下面是我从函数中获取值后所做的操作 lists = sorted(resultsDict.items()) x, y = zip(*lists) startvalues = [0.5,1.0,0] popt, pcov = curve_fit(func, x, y,p0) function=func(x,popt[0],popt[

我对python中的近似有问题。 我有一个函数,它给了我一个带结果的dict。例如
{1:0.5,2:0.25}
。这意味着
f(1)==0.5
f(2)==0.25
,等等

下面是我从函数中获取值后所做的操作

lists = sorted(resultsDict.items())
x, y = zip(*lists)
startvalues = [0.5,1.0,0]
popt, pcov = curve_fit(func, x, y,p0)
function=func(x,popt[0],popt[1],popt[2])
plt.plot(x,y,'x',x,function,'r-')
plt.show()
现在我有了答案。如果我用这种方式定义函数func,一切都可以

def func(x,a,b,c):
   return  a+b/x
如果我这样定义的话

def func(x,a,b,c):
   return  a+b/x+c*x
def func(x,a,b,c):
   return  a+b/x+c/(x*x) # or x**2
我有一个错误:

TypeError:'numpy.float64'对象不能解释为整数
如果我这样定义的话

def func(x,a,b,c):
   return  a+b/x+c*x
def func(x,a,b,c):
   return  a+b/x+c/(x*x) # or x**2
我有一个错误:

TypeError:无法将序列与“tuple”类型的非int相乘

我不知道,问题在哪里,特别是在第二个问题中,我不知道如果我想检查函数
1/x**2

你的代码的前两行将
x
y
呈现为元组,它们在数学运算符中的作用不同于numpy数组。您需要做的只是:
x,y=np.array(已排序(resultsDict.items()).T

这将为您创建一个numpy数组,然后将其转置,使其具有2行和n列,以便可以将其解压缩到
x,y

上,因此
x
y
是列表而不是numpy数组?
curve\u fit
是否来自numpy?给我们举一个
x
y
的例子。代替前两行,尝试
x,y=np.array(sorted(resultsDict.items())).T
,可能你的问题是你试图用
x
y
中的元组进行数学运算,但只需要在其中包含numpy数组。谢谢,我没有意识到,那个numpy有一个很好的数据结构;)这就是你的问题?那我就把它作为答复提交