【问题标题】:scipy.optimize.leastsq : not a proper array of floatsscipy.optimize.leastsq :不是一个正确的浮点数组
【发布时间】:2013-11-29 21:46:08
【问题描述】:

我试图解决一个小玩具问题

import numpy as np
import scipy.optimize as opt

def f(a):
    return np.array([a+.2,a-.1])

opt.leastsq(f,2)

但是,它给了我一个错误

\site-packages\scipy\optimize\minpack.py in leastsq(func, x0, args, Dfun, full_output, col_deriv, ftol, xtol, gtol, maxfev, epsfcn, factor, diag)
    362             maxfev = 200*(n + 1)
    363         retval = _minpack._lmdif(func, x0, args, full_output, ftol, xtol,
--> 364                 gtol, maxfev, epsfcn, factor, diag)
    365     else:
    366         if col_deriv:

error: Result from function call is not a proper array of floats.

但我的函数 f 确实给出了一个 ndarray。

【问题讨论】:

  • 从文档来看,这似乎应该可行。可能是 SciPy 中的一个错误。
  • 尝试在调用时让f 打印anp.array([a+.2,a-.1]),然后退出。查看结果是否符合f 的预期格式。

标签: python optimization scipy mathematical-optimization


【解决方案1】:

所以它需要一个类似数组的输入。这有效:

import numpy as np
import scipy.optimize as opt

def f(a):
    return np.array([a[0]+.2,a[0]-.1])

print opt.leastsq(f,[2])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 2019-08-27
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多