Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのNumPy scimathで底nの対数を計算する方法

PythonのNumPyでscimath(np.emath)を使って底nの対数を計算するには、emath.logn() メソッドを使用します。このメソッドは、指定した値xの底nの対数を返します。xがスカラーであれば結果もスカラーとして、配列であれば配列として返されます。

emath.logn() の大きな特徴は、入力値xに負の数が含まれていても、結果が複素数領域で正しく計算・返却される点です。通常の np.log() では負の入力に対してNaNが返されますが、scimathを使えばエラーにならずに扱えます。

各パラメータの意味は以下の通りです。

  • 第1引数 n: 対数の底(基数)となる整数。
  • 第2引数 x: 底nの対数を求めたい値、または値の配列。

手順

まず、必要なライブラリをインポートします。

import numpy as np

array() メソッドを使ってNumPy配列を作成します。ここでは負の値を含む配列を用意します。

arr = np.array([-4, -8, 8])

作成した配列を表示します。

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 object...\n",arr.shape)

scimathで底nの対数を計算するには、emath.logn() メソッドを使用します。ここでは底を2として計算します。

print("\nResult (logn)...\n",np.emath.logn(2, arr))

完全なコード例

import numpy as np

# array()メソッドを使ってNumPy配列を作成
arr = np.array([-4, -8, 8])

# 配列を表示
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 object...\n",arr.shape)

# scimath(emath.logn())を使って底2の対数を計算
# xがスカラーなら結果もスカラー、配列なら配列として返される
print("\nResult (logn)...\n",np.emath.logn(2, arr))

出力結果

Our Array...
[-4 -8 8]

Dimensions of our Array...
1

Datatype of our Array object...
int64

Shape of our Array object...
(3,)

Result (logn)...
[2.+4.53236014j 3.+4.53236014j 3.+0.j ]

結果の解説

出力を見ると、正の値 8 に対しては通常の実数 3.+0.j(log₂8 = 3)が返されている一方、負の値 -4-8 に対しては虚部を持つ複素数が返されています。

例えば log₂(-4) は数学的には ln(-4)/ln(2) = (ln4 + iπ)/ln2 ≈ 2 + 4.53236014j となり、出力結果と一致します。このように、np.emath.logn() を使えば負の入力を含むデータでも安全に対数計算を行うことができます。

  1. 【Python・NumPy】np.linalg.det()で配列の行列式を計算する方法

    線形代数において配列の行列式を計算するには、PythonのNumPyが提供する np.linalg.det() 関数を使用します。第1引数 a は、行列式を求める対象となる入力配列です。この関数は、計算された行列式の値を返します。なお、行列式とは正方行列に対して定義されるスカラー値であり、連立一次方程式の解の存在判定や逆行列の計算など、線形代数のさまざまな場面で重要な役割を果たします。手順まず、必要なライブラリをインポートします。import numpy as np配列を作成します。arr = np.array([[ 5, 10], [12, 18]])配列を表示します。print(Our A

  2. 【Python】NumPyで自然対数(log)を計算する方法

    自然対数(log)は指数関数の逆関数であり、log(exp(x)) = x という関係が成り立ちます。自然対数とは、ネイピア数 e を底とする対数のことです。NumPy の np.log() メソッドは、入力 x の自然対数を要素ごとに計算して返します。x がスカラーであれば、戻り値もスカラーになります。 主なパラメータ 第1引数(x): 入力値。配列様(array-like)オブジェクトを指定します。 第2引数(out): 結果を格納する場所。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略した場合や None を指定した場合は、新たに確保された配列が返さ