NumPy:以n为基数的对数

Ban*_*ana 56 python math numpy logarithm

关于对数numpy文档中,我发现函数采用对数e,210的对数:

import numpy as np
np.log(np.e**3) #3.0
np.log2(2**3)   #3.0
np.log10(10**3) #3.0
Run Code Online (Sandbox Code Playgroud)

但是,如何在numpy中使用基数n(例如42)的对数?

Ban*_*ana 107

使用以下命令获取自定义基数的对数math.log:

import math
number = 74088  # = 42**3
base = 42
exponent = math.log(number, base)  # = 3
Run Code Online (Sandbox Code Playgroud)

使用以下命令获取自定义基数的对数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]
Run Code Online (Sandbox Code Playgroud)

正如您所料,请注意默认情况np.log(np.e) == 1.0.


提醒一下,对数基数更改规则是:

log_b(X)= log_c(X)/ log_c(b)中

  • 我无法理解为什么 base 不是 numpy 日志中的参数...我总是回到这里... (27认同)
  • 当我需要一千个数字的数组的对数时,我坚持使用Numpy. (26认同)
  • “我什么时候才能用这个?” -学生 (10认同)
  • @polvoazul相同,加上我很困惑为什么有一个完全不同的位置参数“out”,所以当天真地将“math.log(number, base)”切换到“np.log(array, base)”时,你会感到困惑诸如“TypeError:'float'对象不支持项目分配”或“TypeError:返回数组必须是ArrayType”之类的错误。显然所有 ufunc 都有“out”参数,但如果它只是关键字,那就简单多了。 (2认同)