Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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 类型错误:';numpy.int64';对象不可调用—;用外行的话来说,这意味着什么?_Python_Numpy_Scipy_Nonlinear Optimization - Fatal编程技术网

Python 类型错误:';numpy.int64';对象不可调用—;用外行的话来说,这意味着什么?

Python 类型错误:';numpy.int64';对象不可调用—;用外行的话来说,这意味着什么?,python,numpy,scipy,nonlinear-optimization,Python,Numpy,Scipy,Nonlinear Optimization,在使用我自己的S形模型之后,我尝试执行非线性回归: $$f(d)=\frac{1}{1+\exp(-k(d-e))}$$ 网站上介绍的示例非常有效,但我的代码并非如此: import pylab import numpy from scipy import optimize def f(d, k, e): return 1 / (1 + numpy.exp(-k(d-e))) def resid(p, y, d): k, e = p return y - f(d, k

在使用我自己的S形模型之后,我尝试执行非线性回归:

$$f(d)=\frac{1}{1+\exp(-k(d-e))}$$

网站上介绍的示例非常有效,但我的代码并非如此:

import pylab
import numpy
from scipy import optimize

def f(d, k, e):
    return 1 / (1 + numpy.exp(-k(d-e)))

def resid(p, y, d):
    k, e = p
    return y - f(d, k, e)


# load the data
d, r, n = numpy.loadtxt('data.txt', unpack=True)

y = numpy.concatenate([d, r])

k0, e0 = 1, 10

[k, e], flag  = optimize.leastsq(resid, [k0, e0], args=(d, r))

print flag, k, e

# plot the data
pylab.plot(d, r, 'ro')

pylab.show()
但是,当我执行脚本时,它会抛出以下错误:

Traceback (most recent call last):
  File "./logisticfit.py", line 22, in <module>
    [k, e], flag  = optimize.leastsq(resid, [k0, e0], args=(d, r))
  File "/Library/Python/2.7/site-packages/scipy-0.12.0.dev_d631749_20121222-py2.7-macosx-10.8-intel.egg/scipy/optimize/minpack.py", line 348, in leastsq
    m = _check_func('leastsq', 'func', func, x0, args, n)[0]
  File "/Library/Python/2.7/site-packages/scipy-0.12.0.dev_d631749_20121222-py2.7-macosx-10.8-intel.egg/scipy/optimize/minpack.py", line 14, in _check_func
    res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
  File "./logisticfit.py", line 12, in resid
    return y - f(d, k, e)
  File "./logisticfit.py", line 8, in f
    return 1 / (1 + numpy.exp(-k(d-e)))
TypeError: 'numpy.int64' object is not callable

当您编写
k(d-e)
时,它认为您试图调用一个函数
k
,并将
d-e
作为参数。在Python中,不能使用并置来表示乘法。你必须明确地写乘法:
k*(d-e)

LOL,确实是这样。我不应该在晚上编码。谢谢你的回答!
0.0 0.0 6
4.5 0.0 3
6.1 0.333333333333  3
7.7 0.0 3
8.5 0.2 10
9.0 0.6 5
9.3 0.333333333333  3
9.5 0.333333333333  6
10.0    0.333333333333  6
10.5    0.8 5
10.9    0.5 2
11.0    1.0 5
11.5    1.0 5
12.0    1.0 4
12.5    1.0 8
13.0    1.0 1