2

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
4

3 回答 3

9

我认为“最佳”是指最高,在这种情况下,答案很简单 - max()

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

max(data, key=score)

自然,如果“最好”意味着最低,正如 DSM 指出的那样,那么您只需要min()它,它会按照它在锡上所说的那样做。

于 2013-05-03T16:37:39.747 回答
1

通常,您需要reduce功能,但就像@Lattyware 之前所说的那样,您的具体示例max就足够了。

于 2013-05-03T16:39:24.863 回答
0

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

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

于 2013-05-03T16:51:40.463 回答