2020年6月13日土曜日

【Numpy】ndarray要素の最大値・最小値取得

 Pythonの数値計算ライブラリNumPyの配列型データ構造であるndarrayの要素の最大値・最小値を取得する方法ついて説明する。

Numpyを使う際にはimportが必要。しばしばnpと略される。

import numpy as np



1. max/min(amax/amin)によるndarray内の最大値・最小値取得

 maxは1つのndarray内の要素の最大値を求める。引数にaxisを指定すると行ごと、列ごとの最大値を求めることができる。maxamaxの別名であり同じ関数(どちらを使っても同じ結果となる)。

axisを指定しない場合、全要素の最大値が求まる。戻り値はスカラー。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
print(np.max(a))

実行結果

6


 axis=0を指定した場合。第1軸方向に各々の要素の最大値が求まる。戻り値はndarrayになる。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
print(np.max(a, axis=0))

実行結果

[6, 5, 4]


 axis=1を指定すると第2軸方向に各々の要素の最大値が求まる。戻り値はndarrayになる。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
print(np.max(a, axis=1))

実行結果

[4, 6]


 要素の最小値はmin(または別名のamin)により求まる。
軸を指定せず全要素の最小値を求める場合。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
print(np.min(a))

実行結果

1


 axis=0を指定した場合。第1軸方向に各々の要素の最小値が求まり戻り値はndarrayになる。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
print(np.min(a, axis=0))

実行結果

[2, 3, 1]


 axis=1を指定した場合。第2軸方向に各々の要素の最小値が求まり戻り値はndarrayになる。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
print(np.min(a, axis=1))

実行結果

[2, 1]


2. maximum/minumumによる2つのndarray間の最大値・最小値取得

 max/minでは一つのndarray内の最大最小が求まるが、2つのndarrayの最大最小を求めるにはmaximum/minumumを用いる。
numpy.maximumで2つのndarrayの同じインデックスの要素同士を比較し大きい方を抽出する。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
b = np.array([[0,1,8],[2,3,4]])

print(np.maximum(a,b))

実行結果

[[2, 3, 8],
 [6, 5, 4]]


 比較するndarrayの形状は同じでないとエラーになる。

import numpy as np

a = np.array([[2,3,4,1],[6,5,1,9]])
b = np.array([[0,1,8],[2,3,4]])

print(np.maximum(a,b))

実行結果

ValueError: operands could not be broadcast together with shapes (2,4) (2,3) 


 numpy.minimumで2つのndarrayの同じインデックスの要素同士を比較し小さい方を抽出する。

import numpy as np

a = np.array([[2,3,4],[6,5,1]])
b = np.array([[0,1,8],[2,3,4]])

print(np.minimum(a,b))

実行結果

[[0, 1, 4],
 [2, 3, 1]]


3. リファレンス

NumPy > numpy.amax
NumPy > numpy.amin
NumPy > numpy.maximum
NumPy > numpy.minimum

使用バージョン:Python 3.7.0/numpy 1.18.4

0 件のコメント:

コメントを投稿