numpy.max ou max? Lequel est le plus rapide?
En python, lequel est le plus rapide ?
numpy.max(), numpy.min()
ou
max(), min()
La longueur de ma liste/tableau varie de 2 à 600. Lequel devrais-je utiliser pour gagner du temps ?
4 réponses
Eh bien de mes timings il suit si vous avez déjà numpy array a
vous devez utiliser a.max
(la source indique que c'est la même chose que np.max
si a.max
disponible). Mais si vous avez la liste intégrée alors la plupart du temps prend conversion en np.ndarray => c'est pourquoi max
est meilleur dans vos timings.
Dans essense: si np.ndarray
a.max
, si list
et pas besoin de toutes les machines de np.ndarray
puis standard max
.
j'étais également intéressé par ceci et j'ai testé les trois variantes avec perfplot (un petit projet à moi). Résultat: vous n'allez pas Vous tromper avec a.max()
.
Code pour reproduire l'intrigue:
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)'
)
il est probablement préférable si vous utilisez quelque chose comme le Python module timeit pour le tester vous-même. De cette façon, vous pouvez tester vos propres données dans votre propre environnement, plutôt que de compter sur des tiers avec diverses données de test et des environnements qui ne sont pas nécessairement représentatifs de la vôtre.
numpy.min
et numpy.max
ont une sémantique légèrement différente (et des signatures d'appel) des builtins, donc le choix ne devrait pas être lié à la vitesse. Utilisez les versions numpy si vous avez besoin d'être en mesure de traiter les données multidimensionnelles sainement. Si vous utilisez simplement des listes Python ou d'autres choses qui ne connaissent pas la dimensionalité, utilisez les builtins.