【问题标题】:Get coordinates from a lambda function point从 lambda 函数点获取坐标
【发布时间】:2013-08-08 14:11:39
【问题描述】:

我正在将数据拟合到某些曲线。 我有一个模型 lambda 函数,我想获得它最大点的精确坐标 (x,y)。 我能够知道最大值,但是,我还需要知道它在 x 轴上的位置。 这可能吗?

提前感谢您的帮助。

   from pylab import *
   from scipy import optimize

   fitf = lambda f, x: f[0]*(1/(1+((x-f[1])/f[2])**2))
   errf = lambda f, x, y: fitf(f, x) - y 
   f0 = [0, 1, 2] 
   f1, success = optimize.leastsq(errf, f0[:], args=(x, y))

   pos = linspace(100, 100, 1000)
   max = fitf_voigt(f1, pos).max()

   print 'Peak max = %f' %max

args(x, y) 来自我的实验数据。

【问题讨论】:

  • 你是对的,但是功能并不重要。我发现 lambda 函数更适合试用,所以我复制了它。我刚刚缩短了函数。
  • @Lorena:您使用的是numpy 还是scipy?如果是这样,将您的问题标记为这样会很有帮助。
  • 感谢@JoelCornett,我正在使用 scipy。我将同时添加标题和标签。

标签: python scipy lambda


【解决方案1】:

可以使用argmax函数获取最大值的位置:

In [1]: import numpy as np
In [2]: x = np.random.randn(100)
In [3]: x.max()
Out[3]: 2.6054091710887723 
In [4]: x.argmax()
Out[4]: 27
In [5]: x[27]
Out[5]: 2.6054091710887723
In [6]: x[27] == x.max()
Out[6]: True

【讨论】:

  • 感谢@Viktor,我曾想过从 lambda 函数本身获得更直接的东西,但这也解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2019-02-19
  • 2018-04-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多