在python中,哪一個更快?numpy.max或max?哪一個更快?
numpy.max(), numpy.min()
或
max(), min()
我的列表/數組的長度從2變化到600哪一個我應該使用以節省一些運行時間?
在python中,哪一個更快?numpy.max或max?哪一個更快?
numpy.max(), numpy.min()
或
max(), min()
我的列表/數組的長度從2變化到600哪一個我應該使用以節省一些運行時間?
那麼它遵循如果你已經有了numpy的陣列a
你應該使用a.max
(來源告訴它一樣np.max
如果a.max
可用)。但是,如果你有內置列表,那麼大多數時間需要將轉換爲np.ndarray =>這就是爲什麼max
在你的計時中更好。
在essense:如果np.ndarray
然後a.max
,如果list
和不需要的np.ndarray
當時的標準max
所有的機器。
如果你使用類似Python timeit module的東西來爲自己測試它可能是最好的。通過這種方式,您可以在自己的環境中測試自己的數據,而不是依賴具有不一定代表您的各種測試數據和環境的第三方。
我試圖在600個浮點數的隨機列表上。 || np.max()+ np.min() - > 1.093毫秒|| max()+ min() - > 0.092 msec – Froyo
numpy.min
和numpy.max
與內建函數有稍微不同的語義(和調用簽名),所以選擇不應該與速度有關。如果您需要能夠理智地處理多維數據,請使用numpy版本。如果您只是使用Python列表或其他不瞭解維度的東西,請使用builtins。
我也對此感興趣,並用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(20)],
logx=True,
logy=True,
xlabel='len(a)'
)
你一定要測試並找出你的具體情況,但我的第一直覺是,這將取決於你的iterables是否「香草「python iterables或numpy iterables。 – jedwards
如果數據在**列表**中,我會使用vanilla'max'。如果他們在**數組**中,我會使用'numpy.max'。將列表轉換爲numpy數組是一個相當昂貴的操作 –