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