Pythonでリストの最大値や最小値を求めるときに、max()やmin()関数を用いて変な結果が表示されたことがありませんか?リストの中にリストがある場合、言い換えればリストが集まってリストになっている場合、つまり多次元リストの場合に、リストの中にあるすべての数値の最大値、最小値を求めるには、numpyのamax()関数あるいはamin()関数が便利です。
max()、min()関数
多次元リストに対して、max()、min()関数を用いると、全体のリストの中にある多数のリストの内、リストの先頭の数値が最大あるいは最小になるリストを出力します。
max(Z[n])、min(Z[n])
多次元リストに対して、リストZに対してmax()、min()関数を適用する際、全体リスト内のn番目のリストの最大値あるいは最小値を探す場合には、max(Z[n])、min(Z[n])と指定します。nは0から始まる点に注意が必要です。
np.amax()、np.amin()
多次元リストに対して、リストの中にあるすべての数値の最大値、最小値を求めるには、numpyのamax()関数あるいはamin()関数が便利です。
使用例
多次元リストZを定義し、上記の関数を使って最大値と最小値をprintしてみます。
#-------------- モジュールの設定 -------------------------- import numpy as np #-------------- インプットデータ入力 ------------------------ Z=[[0,-8,-12.6,-15,-25], [-34.6,7.1,7.3,7.1,-34.6], [-57,13.3,15.8,13.3,-57], [-14,8.1,7.3,7,-30.2], [5,-9,-12.6,-9,0]] #-------------- 最大値 --------------------------------- print('------max(Z)-------') print(max(Z)) print('------max(Z[2])-------') print(max(Z[2])) print('------max(Z[3])-------') print(max(Z[3])) print('------np.amax(Z)-------') print(np.amax(Z)) #-------------- 最小値 --------------------------------- print('------min(Z)-------') print(min(Z)) print('------min(Z[2])-------') print(min(Z[2])) print('------min(Z[3])-------') print(min(Z[3])) print('------np.amin(Z)-------') print(np.amin(Z))
上記のプログラムを実行した結果を以下に示します。
- max(Z)関数を用いると、先頭の数値のみを他のリストと比べて最大値であるリストを返しています。
- max(Z[2])を用いると2番目のリスト(最初が0番目ですので、3つめのリスト)の最大値を返します。
- max(Z[3])を用いると3番目のリスト(最初が0番目ですので、4つめのリスト)の最大値を返します。
- np.amax(Z)関数を用いると、すべてのリスト内の数値の内で最大値を返します。
なお、最小値に関しても同様な最小値を返します。
pythonで多次元リストの最大値がなかなか探せなかったため、この記事を掲載しました。参考になればうれしいです。
コメント