PythonのNumpyでlog(対数関数)の使い方を解説する

スポンサーリンク

今回は、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("
Logarithm value of array elements:
"
)
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のログをグラフ化したもの

計算されたlog値をよりよく理解するために、Python matplotlibモジュールを使って、元の値に対してlog値をプロットすることができる。

例えば、以下の様になります。

Log Value With Custom Base
Log Value With Custom Base

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

結果は以下の通りです。

Graphical Representation Of Numpy Log
Graphical Representation Of Numpy Log

まとめ

以上、Python NumPyのlogメソッドについて、様々なケースを想定しながら、その動作を理解しました。


タイトルとURLをコピーしました