En python, lequel est le plus rapide?
numpy.max(), numpy.min()
ou
max(), min()
Ma longueur de liste/tableau varie de 2 à 600. Laquelle dois-je utiliser pour économiser du temps d'exécution?
Eh bien, d'après mon timing, il s'ensuit que si vous avez déjà un tableau numpy 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 une liste intégrée, la plupart du temps prend conversion en np.ndarray => c'est pourquoi max
est meilleur dans votre timing.
Essentiellement: si np.ndarray
puis a.max
, si list
et pas besoin de toutes les machines de np.ndarray
puis standard max
.
J'étais également intéressé par cela et j'ai testé les trois variantes avec perfplot (un petit projet à moi). Résultat: vous ne vous trompez pas 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 d'utiliser quelque chose comme le Python module timeit pour le tester par vous-même. De cette façon, vous pouvez tester vos propres données dans votre propre environnement, plutôt que de vous fier à sur des tiers avec diverses données de test et environnements qui ne sont pas nécessairement représentatifs des vôtres.
numpy.min
et numpy.max
ont des sémantiques (et des signatures d'appels) légèrement différentes de celles intégrées, donc le choix ne devrait pas être lié à la vitesse. Utilisez les versions numpy si vous devez être en mesure de gérer les données multidimensionnelles en toute sécurité. Si vous utilisez simplement Python listes ou autres choses qui ne connaissent pas la dimensionnalité, utilisez les fonctions intégrées).