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

问题描述 投票:29回答:4

在python中,哪一个更快?

numpy.max(), numpy.min()

要么

max(), min()

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

python numpy runtime max min
4个回答
41
投票

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

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


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)'
    )

10
投票

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


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.