web-dev-qa-db-ja.com

NumPy:底がnの対数

対数に関するnumpyドキュメンテーション から、ベースで対数を取る関数を見つけました e2 、および 1

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など)で対数を取るにはどうすればよいですか?

52
Banana

_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]
_

予想どおり、np.log(np.e) == 1.0のデフォルトのケースに注意してください。


念のため、対数 基本変更 ルールは次のとおりです。

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

99
Banana