スライドショー

【NumPy入門 np.max】最大値を取り出すnp.max,np.nanmax,np.maximum

NumPy配列(np.array)要素の中から最大値や最小値を取り出す関数に、np.max/np.minという関数があります。これらを使うことで、Python標準のmax/min関数を使うよりも高速な計算が可能です!是非とも使っていきたいですね!

さて、この記事ではnp.maxなどの、最大値を取り出す関数の使い方について紹介していきます。

この記事で解説する関数

  • np.max 普通の配列から最大値を取り出す
  • np.nanmax NaNが混ざった配列から、NaNを無視して最大値を取り出す
  • np.maximum 要素ごと比較して大きい値と取り出す。

np.maxの引数と返り値

np.maxのパラメータ(引数)でよく使うものを解説します。ここでは、np.amaxのパラメータ説明をしていますが、np.maxと同じものです。

参考:SciPy.org

numpy.amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>)

配列全体の最大値を返す。

axisを指定している場合は、axisに沿った範囲内で最大値を取って配列として返す。

Parameters:
a : array_like

最大値を見つけたい配列

axis : None or int or tuple of ints, optional

最大値を計算する範囲をaxisで指定する。

out : ndarray, optional

outに配列を指定すると、出力するときに新しい配列を作らずにoutを上書きする(新しい配列を作らない)

keepdims : bool, optional
initial : scalar, optional
Returns:
amax : ndarray or scalar

Maximum of a. If axis is None, the result is a scalar value. If axis is given, the result is an array of dimension a.ndim - 1.

使い方

この記事のコードはJupyter上で実行して書かれました。コードを試しながら読み進める場合は、Jupyter Notebook/LabやIPythonで実行してみてください。

In [~]はJupyterのセルを表していて、コードがその後ろに書かれています。

これに対してOutの後ろは出力結果です。実際に動かしながら読んだほうがわかりやすいはずなので、是非Jupyterで実行しながら読んでみてください!

基本的な使い方

まずはimportしてサンプル配列を作成します。

In [1]:

import numpy as np

In [2]:

x = np.arange(0,12)
x2 = np.reshape(x, (3,4))
print("x:\n", x)
print("x2:\n", x2)

Out:

x:
 [ 0  1  2  3  4  5  6  7  8  9 10 11]
x2:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

np.maxでは最低限、最大値を取りたい配列を指定するだけで使うことができます。また、実はnp.amaxも同様の動きをします。

In [3]:

np.max(x)

Out[3]:

11

In [4]:

np.max(x2)

Out[4]:

11

In [5]:

np.amax(x)

Out[5]:

11

axisで列毎・行毎に最大値を取る

axis=0で列毎の最大値を取ります。

axis=1で行毎に最大値を取ります。

In [6]:

np.max(x2, axis=0)

Out[6]:

array([ 8,  9, 10, 11])

In [7]:

np.max(x2, axis=1)

Out[7]:

array([ 3,  7, 11])

np.nanmaxでnanが入った配列の最大値を取る

配列内にNaN(Non a Number)が入っている場合、普通のnp.max関数ではnanが最大値として出てきてしまいます。NaNを無視して最大値を取りたい場合は、np.nanmaxを使えばOKです。

使い方はmaxと同じです。

In [8]:

x3 = np.array([1,2,np.nan, 3])
x3

Out[8]:

array([ 1.,  2., nan,  3.])

In [9]:

# NaNが入った配列にnp.max関数を使うとNaNが返ってきてしまいます。
np.max(x3)

Out[9]:

nan

In [10]:

# np.nanmaxを使うことで、NaNを無視して最大値を取り出すことができます!
np.nanmax(x3)

Out[10]:

3.0

np.maximumで配列の要素毎に第二引数と大小関係を比較する

np.maximumという関数は、これまでと毛色の違う動きをします。この値は、第一引数と第二引数の大小関係を要素ごとに比較して、大きい方を格納した配列を返します。

In [11]:

np.maximum(x3, 2)

Out[11]:

array([ 2.,  2., nan,  3.])

In [12]:

a = [10,20,30]
b = [20,15,10]
np.maximum(a,b)

Out[12]:

array([20, 20, 30])

まとめ

この記事では、np.maxを始めとした配列の要素から最大値を取り出す関数を解説しました。NumPyでは、行列計算で必要になるであろう機能がほぼほぼ網羅されています。

NumPyを使った計算をする際には、NumPyの世界で計算を終わらせることで高速な計算が可能です。是非ともこの記事で最大値に関わるNumPyの関数を覚えて、機械学習の実装などに役立ててください!

今回の記事は下記の記事を参考にしています。
参考記事:

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。