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
答案 0 :(得分:9)
我认为'最好'你的意思是最高的,在这种情况下答案很简单 - max()
。
它需要一个key
参数,这将是你的功能。
max(data, key=score)
当然,如果'最佳'意味着最低,正如DSM所指出的那样,那么你只需要min()
代替它,就像它在锡上所做的那样。
答案 1 :(得分:1)
一般情况下,您需要reduce功能,但与之前的@Lattyware said类似,您的具体示例max
就足够了。
答案 2 :(得分:0)
如果您只想严格优化一个参数,那么max和min的工作完全正常。也就是说,最有趣的问题(在我看来)依赖于根据某些成本参数一次优化至少两个参数。对于任何类型的非线性优化,我强烈推荐scipy的优化模块。可以找到here的文档。
SLSQP是最灵活的优化算法,因此可能对您有所帮助。