web-dev-qa-db-fra.com

NumPy: Logarithme avec base n

De la documentation numpy sur les logarithmes , j'ai trouvé des fonctions permettant de prendre le logarithme avec la base e , 2 , et 1 :

import numpy as np
np.log(np.e**3) #3.0
np.log2(2**3)   #3.0
np.log10(10**3) #3.0

Cependant, comment puis-je prendre le logarithme avec la base n (par exemple 42) en numpy?

52
Banana

Pour obtenir le logarithme avec une base personnalisée en utilisant math.log :

import math
number = 74088  # = 42**3
base = 42
exponent = math.log(number, base)  # = 3

Pour obtenir le logarithme avec une base personnalisée en utilisant numpy.log :

import numpy as np
array = np.array([74088, 3111696])  # = [42**3, 42**4]
base = 42
exponent = np.log(array) / np.log(base)  # = [3, 4]

Comme vous vous en doutez, notez que le cas par défaut de np.log(np.e) == 1.0.


Pour rappel, la règle du logarithme changement de base est la suivante:

log_b(x)=log_c(x)/log_c(b)

99
Banana