在Python中是否存在内置函数以找到满足某些条件的最佳值?

时间:2013-05-03 16:36:07

标签: python python-2.7 python-3.x

Python中是否存在内置函数,可以找到满足某些条件的最佳值(由函数指定)?例如,代替这个代码:

def argmin(seq, fn):
    best = seq[0]; best_score = fn(best)
    for x in seq:
        x_score = fn(x)
        if x_score < best_score:
            best, best_score = x, x_score
    return best

3 个答案:

答案 0 :(得分:9)

我认为'最好'你的意思是最高的,在这种情况下答案很简单 - max()

它需要一个key参数,这将是你的功能。

max(data, key=score)

当然,如果'最佳'意味着最低,正如DSM所指出的那样,那么你只需要min()代替它,就像它在锡上所做的那样。

答案 1 :(得分:1)

一般情况下,您需要reduce功能,但与之前的@Lattyware said类似,您的具体示例max就足够了。

答案 2 :(得分:0)

如果您只想严格优化一个参数,那么max和min的工作完全正常。也就是说,最有趣的问题(在我看来)依赖于根据某些成本参数一次优化至少两个参数。对于任何类型的非线性优化,我强烈推荐scipy的优化模块。可以找到here的文档。

SLSQP是最灵活的优化算法,因此可能对您有所帮助。