numpy.max还是最大?哪一个更快?

时间:2012-06-08 04:31:55

标签: python numpy runtime max min

在python中哪一个更快?

numpy.max(), numpy.min()

max(), min()

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

4 个答案:

答案 0 :(得分:41)

从我的时间开始,如果你已经拥有numpy数组a,你应该使用a.max(如果np.max可用,则来源告诉它与a.max相同)。但是如果你有内置列表,那么大部分时间都会将转换转换成np.ndarray =>这就是为什么max在你的时间更好的原因。

理所当然:如果np.ndarray然后a.maxlistnp.ndarray并且不需要max然后标准{{1}}的所有机制。

答案 1 :(得分:22)

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

enter image description here

重现情节的代码:

import numpy
import perfplot

perfplot.show(
    setup=lambda n: numpy.random.rand(n),
    kernels=[
        max,
        numpy.max,
        lambda a: a.max()
        ],
    labels=['max(a)', 'numpy.max(a)', 'a.max()'],
    n_range=[2**k for k in range(25)],
    logx=True,
    logy=True,
    xlabel='len(a)'
    )

答案 2 :(得分:10)

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

答案 3 :(得分:2)

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