为什么返回的函数数组是输入列表的两倍?

时间:2012-09-06 13:15:35

标签: python numpy scipy

我在python中创建了一个简单的函数:

def func(a,x):
  return a+x*2

然后我称之为

x = [log(1),log(2),log(4),log(5),log(8)]
#Import y data from a file
free= curve_fit(func,np.array(x),np.array(y))[0][0]
yline = func(free,x)

结果ylinex的两倍,并且每个元素都在那里两次。

为什么会这样?

注意: 我正在导入numpy但不是scipy或curve_fit

1 个答案:

答案 0 :(得分:5)

x是一个列表,在func中,它将“乘以2”(即其元素的数量加倍)。

如果你想将它乘以2(即乘以每个元素),首先将其转换为np.array

x = [log(1),log(2),log(4),log(5),log(8)]
#Import y data from a file
free= curve_fit(func,np.array(x),np.array(y))[0][0]
yline = func(free, np.array(x))