log2 en python module math
pourquoi ne pas exister?
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
Je sais que je peux faire log(x,2), mais log2 est vraiment commun, donc je suis un peu perplexe.
Oh, on dirait qu'il est défini dans C99, pas C90, je suppose que ça répond à ma question. Semble encore un peu idiot.
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez répondu à votre propre question. 🙂 Il n'y a pas
log2(x)
parce que vous pouvez fairelog(x, 2)
. Comme Le Zen de Python (PEP 20) dit, "Il devrait y avoir un, et de préférence seulement une façon évidente de le faire."Cela dit,
log2
a été considéré dans Issue3366 (défiler vers le bas pour les 3 derniers messages) qui a ajouté plusieurs autres C99 fonctions mathématiques pour lamath
module pour Python 2.7 et 3.2.Modifier: log2 a été réexaminée dans Issue11888 et ajouté en Python 3.3.
log10
existent?log10(x)
au lieu delog(x, 10)
: "en mathématiques.log10(x) retourne le logarithme en base 10 de x. C'est généralement plus précis que log(x, 10)" Alors, est -log(x, 2)
moins précis qu'une mise en œuvre spécifique?2**ceil(log(n, 2))
, vous aurez la mauvaise réponse, carmath.log(n, 2)
= 29.000000000000004 au lieu de 29,0.np.log2(n)
= 29.0 exactement, de sorte que produit la réponse correcte.Je ne suis pas sûr qu'il y a c'est que vous voulez, mais:
-- De mathématiques, point de vue que vous pouvez faire par exemple en mathématiques.log(x)/math.log(2).
-- Si l'entrée X est un type intégral et vous êtes en attente pour l'intégrale de résultat arrondi - vous pouvez le faire plus vite avec droit de changer. Cela fonctionne avec SHR de commande et sans la série de Taylor + local d'interpolation, qui est sous le capot de la libc log() appels.