在python中哪一个更快?
numpy.max(), numpy.min()
或
max(), min()
我的列表/数组长度从2到600不等。我应该使用哪一个来节省一些运行时间?
答案 0 :(得分:41)
从我的时间开始,如果你已经拥有numpy数组a
,你应该使用a.max
(如果np.max
可用,则来源告诉它与a.max
相同)。但是如果你有内置列表,那么大部分时间都会将转换转换成np.ndarray =>这就是为什么max
在你的时间更好的原因。
理所当然:如果np.ndarray
然后a.max
,list
,np.ndarray
并且不需要max
然后标准{{1}}的所有机制。
答案 1 :(得分:22)
我也对此感兴趣,并使用perfplot(我的一个小项目)测试了这三个变体。结果:a.max()
你没有错。
重现情节的代码:
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.min
和numpy.max
对内置函数的语义(和调用签名)略有不同,因此选择不应与速度有关。如果您需要能够合理地处理多维数据,请使用numpy版本。如果您只是使用Python列表或其他不了解维度的东西,请使用builtins。