Python NumPyのscimath.power()で負の値を含む配列の累乗計算を行う方法
Pythonで負の入力値が含まれる場合でも累乗計算の結果を正しく取得したいときは、scimath.power()メソッド(np.emath.power())を使用します。このメソッドはxのp乗、つまりx**pの結果を返します。xとpがスカラーであれば結果もスカラーになり、それ以外の場合は配列が返されます。
scimath.power()の特徴
このメソッドの最大の特徴は、入力値xに負の値が含まれている場合、出力が自動的に複素数領域に変換されるという点です。通常のnumpy.power()では負の数の平方根などはNaNになってしまいますが、scimathを使えば複素数として数学的に妥当な結果が得られます。
各パラメータの意味は以下の通りです。
- x: 入力値(累乗の底となる値)
- p: xを何乗するかを指定する指数。xに複数の値が含まれる場合、pはスカラーであるか、xと同じ要素数を持つ必要があります。後者の場合、結果はx[0]**p[0], x[1]**p[1], ... のように要素ごとに計算されます。
実行手順
まず、必要なライブラリをインポートします。
import numpy as np
array()メソッドを使ってNumPy配列を作成します。ここでは負の値も含めた配列を用意します。
arr = np.array([2, -4, -8, 16, -32])
作成した配列を表示して確認します。
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.power()メソッドを使って、各要素を2乗した結果を取得します。
print("\nResult...\n",np.emath.power(arr, 2))完全なコード例
import numpy as np
# array()メソッドで負の値を含むNumPy配列を作成
arr = np.array([2, -4, -8, 16, -32])
# 配列を表示
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.power()で累乗計算を実行
print("\nResult...\n",np.emath.power(arr, 2))実行結果
Our Array... [ 2 -4 -8 16 -32] Dimensions of our Array... 1 Datatype of our Array object... int64 Shape of our Array object... (5,) Result... [ 4.+0.j 16.-0.j 64.-0.j 256.+0.j 1024.-0.j]
出力を見ると、負の値(-4、-8、-32)を2乗した結果が複素数形式(16.-0.j など)で返されていることがわかります。虚部は実質的に0ですが、scimathが複素数領域で処理を行ったことを示しています。このように、scimath.power()を使うことで、負の値を含む配列でもエラーやNaNを発生させることなく安全に累乗計算が可能になります。
-
Python NumPyのnp.log2()で入力配列の底2の対数を計算する方法
PythonのNumPyで入力配列の各要素に対して底2の対数(log₂)を求めるには、numpy.log2()メソッドを使用します。このメソッドは引数xの底2の対数を返します。xがスカラーの場合、戻り値もスカラーになります。numpy.log2()の主なパラメータ第1パラメータ:x — 入力値を指定します。配列のようなオブジェクト(array-like)を受け付けます。第2パラメータ:out — 計算結果を格納する場所を指定します。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略した場合やNoneを指定した場合は、新しく確保された配列が返されます。タプルで指定
-
Python・NumPyで文字列配列の各要素の長さを取得する方法
文字列配列の各要素の長さを要素ごとに取得したい場合は、PythonのNumPyが提供する numpy.char.str_len() メソッドを使用します。このメソッドは、各文字列の長さを格納した整数型の出力配列を返します。実行手順まず、必要なライブラリをインポートします。import numpy as np次に、1次元の文字列配列を作成します。arr = np.array([Amy, Scarlett, Katie, Brad, Tom])作成した配列を表示してみましょう。print(Array...\n,arr)配列のデータ型を確認します。print(\nArray datatype...\