【Python】NumPyで自然対数(log)を計算する方法
自然対数(log)は指数関数の逆関数であり、log(exp(x)) = x という関係が成り立ちます。自然対数とは、ネイピア数 e を底とする対数のことです。NumPy の np.log() メソッドは、入力 x の自然対数を要素ごとに計算して返します。x がスカラーであれば、戻り値もスカラーになります。
主なパラメータ
- 第1引数(x): 入力値。配列様(array-like)オブジェクトを指定します。
- 第2引数(out): 結果を格納する場所。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略した場合や None を指定した場合は、新たに確保された配列が返されます。タプルで指定することもできます(キーワード引数としてのみ可能)が、その長さは出力の数と一致していなければなりません。
対数の数学的な性質
対数は多価関数です。つまり、各 x に対して exp(z) = x を満たす z は無限に存在します。NumPy では慣例として、虚部が [-π, π] の範囲に収まる z を返します。
実数値の入力データ型の場合、log は常に実数の出力を返します。実数または無限大として表現できない値に対しては nan を返し、無効な浮動小数点演算のエラーフラグを設定します。
複素数値の入力の場合、log は分岐切断 [-∞, 0] を持ち、その上側から連続となる複素解析関数として振る舞います。また、浮動小数点の負のゼロは微小な負の数として扱われ、C99 標準に準拠しています。
計算手順
まず、必要なライブラリをインポートします。
import numpy as np
array() メソッドを使って NumPy 配列を作成します。
arr = np.array([1, 2, np.e, np.e**2])
作成した配列を表示します。
print("Our Array...\n",arr)
配列の次元数を確認します。
print("\nDimensions of our Array...\n",arr.ndim)
配列のデータ型を取得します。
print("\nDatatype of our Array object...\n",arr.dtype)
配列の形状を取得します。
print("\nShape of our Array...\n",arr.shape)
最後に、np.log() を使って自然対数を計算します。自然対数 log は指数関数の逆関数であり、log(exp(x)) = x が成り立ちます。
print("\nResult (log)...\n",np.log(arr))
完全なサンプルコード
import numpy as np
# array()メソッドを使ってNumPy配列を作成
arr = np.array([1, 2, np.e, np.e**2])
# 配列を表示
print("Our Array...\n",arr)
# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)
# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)
# 形状を取得
print("\nShape of our Array...\n",arr.shape)
# 自然対数logは指数関数の逆関数であり、log(exp(x)) = xが成り立つ。自然対数はeを底とする対数。
print("\nResult (log)...\n",np.log(arr))
実行結果
Our Array... [1. 2. 2.71828183 7.3890561 ] Dimensions of our Array... 1 Datatype of our Array object... float64 Shape of our Array... (4,) Result (log)... [0. 0.69314718 1. 2.]
このように、配列内の各要素に対して自然対数が計算されていることがわかります。特に np.e(約2.71828)の対数は 1、np.e**2 の対数は 2 となっており、指数関数と対数関数が互いに逆の関係にあることが確認できます。
-
Pythonで複素数値入力の自然対数を計算する方法
自然対数は指数関数の逆関数であり、log(exp(x)) = x という関係が成り立ちます。自然対数とは、e(ネイピア数)を底とする対数のことです。NumPyの np.log() メソッドは、入力xの自然対数を要素ごとに計算して返します。xがスカラーの場合はスカラー値を返します。np.log() の主なパラメータ第1パラメータは入力値で、配列状のオブジェクト(array-like)を指定します。第2パラメータの out は、計算結果を格納する場所です。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略した場合や None を指定した場合は、新しく確保された配列が
-
Pythonで配列が「美しい」かどうかを判定する方法
この記事では、ユニークな要素からなる配列 nums が与えられたときに、その配列が「美しい配列」と呼べる条件を満たしているかどうかを判定する方法を解説します。満たすべき条件は以下の2つです。すべての要素が 1 から n の範囲内に収まっていること配列が昇順にソートされていないことたとえば、入力が nums = [2,6,1,5,3,4] の場合、出力は True になります。これは、すべての要素が 1〜6 の範囲に存在し、かつ昇順に並んでいないためです。解法のアプローチこの問題は、次の手順で解くことができます。n := nums のサイズとするtotal := nums[0] で初期化するis