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

【Python・NumPy】nanmax()で軸0に沿った最大値を求める方法|NaNを無視した最大値の取得

Pythonで配列の最大値、またはNaN(非数)を無視した最大値を取得するには、numpy.nanmax()メソッドを使用します。このメソッドは、指定した軸が取り除かれた、元の配列aと同じ形状の配列を返します。aが0次元配列の場合、またはaxisがNoneの場合は、ndarrayスカラーが返され、返り値のdtypeはaと同じになります。

nanmax()メソッドの主な引数

第1引数:a
最大値を求めたい数値を含む配列です。aが配列でない場合は、自動的に変換が試みられます。

第2引数:axis
最大値を計算する対象となる1つ以上の軸を指定します。デフォルトでは、フラット化された配列全体の最大値が計算されます。axis=0を指定すると列方向、axis=1を指定すると行方向の最大値が求まります。

第3引数:out
結果を格納するための代替出力配列です。デフォルトはNoneです。指定する場合は、期待される出力と同じ形状である必要がありますが、必要に応じて型はキャストされます。

第4引数:keepdims
Trueに設定すると、縮小された軸がサイズ1の次元として結果に残ります。このオプションにより、結果は元の配列aに対して正しくブロードキャストされます。デフォルト以外の値が指定された場合、keepdimsはndarrayのサブクラスのmaxメソッドに渡されます。サブクラスのメソッドがkeepdimsを実装していない場合は例外が発生します。

第5引数:initial
出力要素の最小値です。空のスライスに対しても計算を行えるようにするために指定します。

実装の手順

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

import numpy as np

array()メソッドを使用してnumpy配列を作成します。ここでは、int型の要素にnanを混ぜた2次元配列を用意しています。

arr = np.array([[10, 20, 30], [40, np.nan, 60]])

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

print("Our Array...\n",arr)

配列の次元数を確認します。

print("\nDimensions of our Array...\n",arr.ndim)

配列のデータ型を取得します。

print("\nDatatype of our Array object...\n",arr.dtype)

配列の最大値、またはNaNを無視した最大値を返すには、numpy.nanmax()メソッドを使用します。ここではaxis=0(列方向)を指定しています。

print("\nResult (nanmax)...\n",np.nanmax(arr, axis = 0))

完全なコード例

import numpy as np

# array()メソッドを使用してnumpy配列を作成
# int型の要素にnanを追加
arr = np.array([[10, 20, 30], [40, np.nan, 60]])

# 配列を表示
print("Our Array...\n",arr)

# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)

# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)

# numpy.nanmax()メソッドでNaNを無視した最大値を計算
print("\nResult (nanmax)...\n",np.nanmax(arr, axis = 0))

実行結果

Our Array...
[[10. 20. 30.]
[40. nan 60.]]

Dimensions of our Array...
2

Datatype of our Array object...
float64

Result (nanmax)...
[40. 20. 60.]

結果の解説

axis=0を指定したため、各列ごとの最大値が計算されています。第1列では10と40を比較して40、第2列では20とnanを比較し、nanが無視されて20、第3列では30と60を比較して60という結果になっています。

なお、通常のnp.max()を使うとNaNが含まれる場合の結果はnanになってしまいますが、np.nanmax()を使えばNaNを自動的に除外して正しい最大値を得られるのが大きなメリットです。欠損値を含む実データの解析において非常に便利なメソッドなので、ぜひ活用してください。

  1. Python NumPyのnp.log2()で入力配列の底2の対数を計算する方法

    PythonのNumPyで入力配列の各要素に対して底2の対数(log₂)を求めるには、numpy.log2()メソッドを使用します。このメソッドは引数xの底2の対数を返します。xがスカラーの場合、戻り値もスカラーになります。numpy.log2()の主なパラメータ第1パラメータ:x — 入力値を指定します。配列のようなオブジェクト(array-like)を受け付けます。第2パラメータ:out — 計算結果を格納する場所を指定します。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略した場合やNoneを指定した場合は、新しく確保された配列が返されます。タプルで指定

  2. 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...\