PythonでNaNを無視して配列の最大値を返す方法(numpy.nanmaxの使い方)
Pythonで、NaNを無視して配列の最大値を返したい場合は、NumPyの numpy.nanmax() メソッドを使用します。このメソッドは、指定した軸が取り除かれた状態で、入力配列 a と同じ形状の結果を返します。a が0次元配列の場合や、axis に None を指定した場合は、ndarrayスカラーが返されます。また、返り値のdtypeは元の配列と同じになります。
numpy.nanmax() の主なパラメータ
このメソッドには以下のパラメータがあります。
第1引数:a
最大値を求めたい数値を含む配列です。配列以外のオブジェクトが渡された場合は、自動的に配列への変換が試みられます。
第2引数:axis
最大値を計算する対象となる軸(axis)または複数の軸を指定します。デフォルトでは、フラット化された配列全体に対して最大値が計算されます。
第3引数:out
結果を格納する代替の出力配列です。デフォルトは None です。指定する場合は、期待される出力と同じ形状である必要があります。必要に応じて型はキャストされます。
第4引数:keepdims
True に設定すると、計算によって削除された軸が、サイズ1の次元として結果に保持されます。このオプションにより、結果は元の配列 a に対して正しくブロードキャストされます。デフォルト以外の値が指定された場合、keepdims はndarrayのサブクラスの max メソッドに引き渡されます。サブクラスのメソッドが keepdims を実装していない場合、例外が発生します。
第5引数:minimum
出力要素の最小値です。空のスライスに対して計算を行えるようにするために必須のパラメータとなっています。
実装手順
まず、必要なライブラリをインポートします。
import numpy as np
array() メソッドを使ってNumPy配列を作成します。ここでは、int型の要素に加えて、nan(非数)と inf(正の無限大)を含む要素を追加しています。
arr = np.array([[25, 50, 75], [90, np.nan, np.inf]])
作成した配列を表示します。
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() メソッドを使用します。
print("\nResult (nanmax)...\n",np.nanmax(arr))完全なコード例
import numpy as np
# array() メソッドでNumPy配列を作成
# int型の要素に nan と inf(正の無限大)を含めています
arr = np.array([[25, 50, 75], [90, np.nan, np.inf]])
# 配列を表示
print("Our Array...\n",arr)
# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)
# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)
# NaNを無視して最大値を計算(フラット化された配列全体が対象)
print("\nResult (nanmax)...\n",np.nanmax(arr))実行結果
Our Array... [[25. 50. 75.] [90. nan inf]] Dimensions of our Array... 2 Datatype of our Array object... float64 Result (nanmax)... inf
このように、配列内に nan が含まれていても、np.nanmax() を使えばNaNを除外した上で最大値を取得できます。今回の例では、正の無限大 inf が配列に含まれているため、結果として inf が返されています。なお、通常の np.max() を使った場合はNaNが伝播して結果が nan になってしまうため、欠損値を含むデータの最大値を求める際には nanmax() の使用が有効です。
-
Python・PandasでIndexの最大値を取得する方法|index.max()の使い方
PandasのIndexオブジェクトから最大値を取得したい場合は、index.max() メソッドを使用します。このメソッドは、インデックスに含まれる要素の中から最も大きい値を1つ返してくれます。必要なライブラリのインポートまず、Pandasをインポートします。import pandas as pdPandasインデックスの作成次に、数値を含むPandasのインデックスを作成します。index = pd.Index([10, 20, 70, 40, 90, 50, 25, 30])作成したインデックスを表示してみましょう。print(Pandas Index...\n, index)そして、m
-
Pythonで配列内のnCr値が最大となるペアを検索する方法
問題概要 n個の整数を含む配列arrが与えられたとき、配列からarr[i]とarr[j]を選び、二項係数arr[i]Carr[j](組み合わせの数)が最大になるようなペアを見つける必要があります。条件を満たすペアが複数存在する場合は、そのうちのどれか1つを返せば構いません。 例えば、入力が[4, 1, 2]の場合、出力は「4 2」になります。これは、4C1 = 4、4C2 = 6、2C1 = 2と計算でき、(4, 2)のペアが最大値6を与える唯一の組み合わせだからです。 解法の考え方 この問題を効率的に解くには、二項係数の重要な性質を利用します。nCrは、rがn/2に最も近いときに最大値を取る