今回は、Python Numpyの対数関数に注目します。
Pythonを始める NumPyログ
PythonのNumPyモジュールは配列のデータ要素の作成と操作を扱います。
numpy.log()メソッド`は、要素/配列の値のデータ値の自然対数を計算するために使用されます。
構文は以下の様な感じです。
numpy.log(element/array)
|
例として以下の様になります。
import numpy as np
data = 12.2
log_val = np.log(data)
print(log_val)
|
結果は、以下の通りになります。
2.501435951739211 |
例として以下の様になります。
import numpy as np
data = np.e
log_val = np.log(data)
print(log_val)
|
結果を出力すると、以下の様になります。
1.0 |
NumPy の底 2 の対数。
デフォルトの log() メソッド の機能とは別に、以下のコマンドを使用すると、NumPy の配列または base 2 の要素の対数値を計算することができます。
numpy.log2(element) |
例えば、以下の様になります。
import numpy as np
data = 4
log_val = np.log2(data)
print(log_val)
|
結果は以下の通りです。
2.0 |
NumPy の 10 を底とする対数
numpy.log10()関数`は、ある要素の10の底の自然対数を計算するために使用されます。
構文は以下の様な感じです。
numpy.log10(data) |
例えば、以下の様になります。
import numpy as np
data = 1000
log_val = np.log10(data)
print(log_val)
|
結果は以下の通りです。
3.0 |
カスタムベースによるNumPy対数
NumPyのlog()関数は、ユーザー定義の底に関する対数値を求める可能性を提供します。
構文は以下の様な感じです。
numpy.log(data)/numpy.log(base)
|
例えば、以下の様になります。
import numpy as np
data = 1000
base = 40
log_val = np.log(data)/np.log(base)
print(log_val)
|
上記の例では、1000の対数を40進数で計算した。
ご存知のように
1.8725890517453545 |
したがって、上記の数学的概念は、データ値のカスタムベース値への対数値を計算するために使用されます。
結果は以下の通りです。
numpy.log(array) |
2次元配列でNumPyログを実行する
numpy.log()メソッドを2次元のNumPy配列に適用すると、すべての配列要素の対数値を計算することができます。
構文は以下の通りです。
import numpy as np
arr = np.arange(1,5).reshape(2,2)
print("Original Array:)
print(arr)
print("Logarithmic value of array elements:)
log_val=np.log(arr)
print(log_val)
|
例えば、以下の様になります。
Original Array:[[1 2]
[3 4]]
Logarithmic value of array elements:[[0. 0.69314718]
[1.09861229 1.38629436]]
|
上記の例では、numpy.reshape()関数を用いて2×2の配列を作成し、numpy.arange()メソッドを用いて乱数を用いてデータ値を作成しています。
さらに、numpy.log()メソッドを使用して、配列の各要素の対数値を求めています。
出力は以下の通りです。
import numpy as np
arr = np.array([10,20,30,4,5])
print("Original Array:)
print(arr)
print(")
log_val=np.log(arr)
print(log_val)
|
NumPy log を NumPy 配列に適用する
例えば、以下の様になります。
Original Array:[10 20 30 4 5]
Logarithm value of array elements:[2.30258509 2.99573227 3.40119738 1.38629436 1.60943791]
|
numpy.array()関数`を用いてNumPy配列を作成し、numpy.log()メソッドを用いて1次元配列の全データ項目の対数値を計算した。
結果は以下の通りです。
import numpy as np
import matplotlib.pyplot as plt
arr = np.array([10,20,30,40,50])
log_val=np.log(arr)
plt.plot(log_val,arr,marker='*',color='green')
|
この記事もチェック:Numpyとvstackメソッドを使って1次元配列を多次元配列に結合する方法
NumPyのログをグラフ化したもの
計算されたlog値をよりよく理解するために、Python matplotlibモジュールを使って、元の値に対してlog値をプロットすることができる。
例えば、以下の様になります。

上記の例では、元の配列の値に対してログ値をプロットするために `pyplot.plot()’ メソッドを使用しています。
結果は以下の通りです。

まとめ
以上、Python NumPyのlogメソッドについて、様々なケースを想定しながら、その動作を理解しました。
この記事もチェック:PythonのNumPyでよく使うメソッドを4つに分けてまとめてみた