在python中,哪一个更快?
numpy.max(), numpy.min()
要么
max(), min()
我的列表/数组长度从2到600不等。我应该使用哪一个来节省一些运行时间?
从我的时间顺序来看,如果你已经有numpy数组a
,你应该使用a.max
(如果np.max
可用,来源告诉它与a.max
相同)。但是如果你有内置列表,那么大部分时间都会把它转换成np.ndarray =>这就是为什么max
在你的时间更好。
本质上:np.ndarray
然后a.max
,如果list
并且不需要np.ndarray
的所有机械然后标准max
。
我也对此感兴趣,并用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)'
)
如果您使用像Python timeit module这样的东西来为自己测试它,那可能是最好的。这样,您就可以在自己的环境中测试自己的数据,而不是依赖于具有各种测试数据和环境的第三方,这些数据和环境不一定代表您的。
numpy.min
和numpy.max
对内置函数的语义(和调用签名)略有不同,因此选择不应该与速度有关。如果您需要能够合理地处理多维数据,请使用numpy版本。如果您只是使用Python列表或其他不了解维度的东西,请使用builtins。