41

在python中,哪个更快?

numpy.max(), numpy.min()

或者

max(), min()

我的列表/数组长度从 2 到 600 不等。我应该使用哪一个来节省一些运行时间?

4

4 回答 4

55

好吧,从我的时间来看,如果你已经有a你应该使用的numpy 数组a.max(消息来源告诉它与可用的相同)。但是,如果您有内置列表,那么大部分时间都需要其转换为 np.ndarray => 这就是为什么您的时间安排更好。np.maxa.maxmax

从本质上讲:如果np.ndarray然后a.max,如果list并且不需要所有np.ndarray标准的机器max

于 2012-06-08T05:22:00.043 回答
34

我对此也很感兴趣,并用perfplot(我的一个小项目)测试了这三个变体。结果:你不会出错a.max()

在此处输入图像描述

重现情节的代码:

import numpy as np
import perfplot

b = perfplot.bench(
    setup=np.random.rand,
    kernels=[max, np.max, lambda a: a.max()],
    labels=["max(a)", "np.max(a)", "a.max()"],
    n_range=[2 ** k for k in range(25)],
    xlabel="len(a)",
)
b.show()
于 2017-04-05T11:08:11.713 回答
12

最好使用 Python timeit 模块之类的东西来自己测试它。这样您就可以在您自己的环境中测试您自己的数据,而不是依赖具有各种测试数据和环境的第三方,这些数据和环境不一定能代表您的环境。

于 2012-06-08T04:37:12.203 回答
2

numpy.min并且numpy.max与内置函数的语义(和调用签名)略有不同,因此选择不应该与速度有关。如果您需要能够理智地处理多维数据,请使用 numpy 版本。如果您只是使用 Python 列表或其他不了解维度的东西,请使用内置函数。

于 2012-06-08T04:39:15.960 回答