今回は、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つに分けてまとめてみた