Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组([…])不是可调用的对象。这在python中意味着什么?_Python_Arrays_Numpy_Callable - Fatal编程技术网

数组([…])不是可调用的对象。这在python中意味着什么?

数组([…])不是可调用的对象。这在python中意味着什么?,python,arrays,numpy,callable,Python,Arrays,Numpy,Callable,我正在编写一个python代码来创建一个圆的曲线拟合,并将其与原始数据一起绘制。我在这里举了几个例子:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html 但是我无法理解为什么我的代码中会出现这个错误,说数组不可调用。这是什么意思?注释“curvefit”后的最后一段代码就是发生错误的地方。 错误如下:(这里的数组是calcCircleFunction()的结果) 好的,curve\u

我正在编写一个python代码来创建一个圆的曲线拟合,并将其与原始数据一起绘制。我在这里举了几个例子:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html 但是我无法理解为什么我的代码中会出现这个错误,说数组不可调用。这是什么意思?注释“curvefit”后的最后一段代码就是发生错误的地方。 错误如下:(这里的数组是calcCircleFunction()的结果)


好的,
curve\u-fit
的第一个参数需要一个函数,而不是数组或列表。

好的,
curve\u-fit
的第一个参数需要一个函数,而不是数组或列表。

curve\u-fit()的第一个参数应该是函数
circle
是一个数组。
callable
是一个通用的Python术语,用于
函数
,以及可以
调用的类似结构,例如
func(…)
calcCircleFunction(扩展数据)
使用
xdata
参数调用函数,返回数组。不能再调用
。不要跳过太多Python基础知识。并将函数参考(例如
scipy
)放在手边。谢谢。我将curve_fit(圆…)更改为curve_fit(calcCircleFunction…),它现在通过了错误。我得到了另一个错误,“无法确定拟合参数的数量。为什么会发生这种情况?堆栈溢出中还有另一个类似的问题,但我看不出它如何适用于我的情况。有人可以给我其他帮助吗?
curve_fit()的第一个参数”
应该是一个函数。
circle
是一个数组。
callable
是一个通用的Python术语,用于
函数
,以及可以
调用的类似结构,例如
func(…)
CalccirleFunction(扩展数据)
使用
xdata
参数调用函数,返回一个数组。不可能再调用
了。不要跳过太多Python基础知识。并将函数引用(例如
scipy
)放在手边。谢谢。我已将曲线拟合(圆…)更改为曲线拟合(calcCircleFunction…现在它通过了错误。我得到了另一个错误,“无法确定拟合参数的数量。为什么会发生这种情况?堆栈溢出中还有另一个类似的问题,但我看不出它如何适用于我的情况。有人能给我另一个帮助吗?”?
runfile('/untitled25.py', wdir='C:/XYZsara/testing/testing stj file')
r= 5
[10.          9.53518102  7.69656593  8.85865225 11.77599647 14.26300842
 16.59986154 18.86270235 21.08280172 23.27574271 25.45026401 27.6116804
 29.76342361 31.90781435 34.04648108 36.18060165 38.31104984 40.43848797
 42.56342747 44.68626971]
Traceback (most recent call last):

  File "\untitled25.py", line 46, in <module>
    popt = curve_fit(circle, xTraj,yTraj)   #array of curve fit version of circles

  File "\anaconda3\lib\site-packages\scipy\optimize\minpack.py", line 686, in curve_fit
    args, varargs, varkw, defaults = _getargspec(f)

  File "\anaconda3\lib\site-packages\scipy\_lib\_util.py", line 298, in getargspec_no_self
    sig = inspect.signature(func)

  File "\anaconda3\lib\inspect.py", line 3083, in signature
    return Signature.from_callable(obj, follow_wrapped=follow_wrapped)

  File "\anaconda3\lib\inspect.py", line 2833, in from_callable
    follow_wrapper_chains=follow_wrapped)

  File "\anaconda3\lib\inspect.py", line 2208, in _signature_from_callable
    raise TypeError('{!r} is not a callable object'.format(obj))

TypeError: array([10.        ,  9.53518102,  7.69656593,  8.85865225, 11.77599647,
       14.26300842, 16.59986154, 18.86270235, 21.08280172, 23.27574271,
       25.45026401, 27.6116804 , 29.76342361, 31.90781435, 34.04648108,
       36.18060165, 38.31104984, 40.43848797, 42.56342747, 44.68626971]) is not a callable object
from random import random
from scipy.optimize import fsolve, curve_fit
import numpy as np
import matplotlib.pyplot as plt

xi = 0
xf = 40
yi = 0
radius = 5
numPoints = 20
xdata = np.linspace(xi,xf,numPoints)

def calcCircleFunction(x):  #calculate the function of circle in 2D
    [a,b] = calcCenters(vars)
    print("r=",radius)
    circle = np.sqrt(abs((x-a)**2-radius**2)) + b
    return circle

def calcCenters(vars):
    a, b = fsolve(solve_ab, [1,1])
    return [a,b]

def solve_ab(vars):
    a,b = vars
    f1 = (xi-a)**2 + (yi-b)**2 - radius**2
    f2 = (xi-a)**2 + ((yi+2*radius)-b)**2 - radius**2
    f = [f1,f2]
    return f


circle = calcCircleFunction(xdata)
print(circle)

"""curvefit"""
xTraj = np.linspace(xi,xf,numPoints)
yTraj = circle + 0.01*random()   #with noise
#print(yTraj)
popt = curve_fit(circle, xTraj,yTraj)   #array of curve fit version of circles
plt.plot(xTraj, yTraj, 'b-')   #plots the originral trajecory
plt.plot(xdata, calcCircleFunction(xdata, *popt), 'r-')
plt.show()