NumPy:以n为底的对数
在 numpy 的文档中,我找到了可以计算以 e、2 和 10 为底的对数的函数:
import numpy as np
np.log(np.e**3) #3.0
np.log2(2**3) #3.0
np.log10(10**3) #3.0
但是,我该如何在 numpy 中计算以 n(例如 42)为底的对数呢?
2 个回答
1
Numpy的底数n对数函数是 np.emath.logn。
import numpy as np
arr = np.array([74088, 3111696]) # = [42^3, 42^4]
base = 42
np.emath.logn(base, arr) # array([3., 4.])
np.emath.logn(14, 14**3) # 3.0
需要注意的是,与 math.log
不同,底数是第一个参数。另外,它还可以处理负数(会返回一个复数)。
232
如果你使用的是numpy 1.23或更高版本,可以使用np.emath.logn来计算对数:
import numpy as np
array = np.array([74088, 3111696]) # = [42^3, 42^4]
base = 42
exponent = np.emath.logn(base, array) # = [3, 4]
如果你的numpy版本比较旧:
你可以用math.log
来计算自定义底数的对数:
import math
number = 74088 # = 42^3
base = 42
exponent = math.log(number, base) # = 3
或者用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]
这两种方法都使用了对数的底数转换规则: