【Numpy】最大値、最小値とそれらのインデックスの取得 (np.max、np.min、np.argmax、np.argmin)[Python]

  • URLをコピーしました!
目次

Python数値計算ライブラリnumpy

前にPythonの数値計算ライブラリnumpyを紹介し、リストの作成方法や四則演算、行列の入れ替えを解説しました。

しかしnumpyにはまだまだ色々と使えるコマンドがあるので、今回から少しずつ解説していきたいと思います。

今回はよく使うだろう最大値、最小値の取得方法、そしてそれらのインデックスの取得方法です。

まずは基本となるプログラムから。

import numpy as np

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

print(a)
print(b)

実行結果
[1 5 3 4 0 9 6 2 8 7]
[1, 5, 3, 4, 0, 9, 6, 2, 8, 7]

最初にnumpyをインポートする必要があるので「import numpy as np」で、numpyをnpとタイプするだけで使用できるようにインポートしています。

そして今回はnumpyのリストを使いたいので、「np.array([1, 5, 3, 4, 0, 9, 6, 2, 8, 7])」としてリストを作成しています(a)。

また通常のリストも比較として準備しました(b)。

ちなみに数値のリストは0から9までが含まれているので、今回使う最小値は0、最大値は9です。

準備が整ったところで解説へといきましょう。

最大値、最小値の取得

numpyを使って最大値、最小値を取得する方法は「np.max」「np.min」です。

またnumpyを使わない通常のリストの場合は、「max」「min」です。

import numpy as np

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

print(np.max(a))
print(np.min(a))

print(max(b))
print(min(b))

実行結果
9
0
9
0

どちらも最大値9、最小値0が取得できました。

最大値、最小値のインデックス取得

次に最大値、最小値のインデックスを取得してみましょう。

ちなみに先ほどのリストでは最小値0のインデックスは「4」、最大値9のインデックスは「5」です。

numpyで最大値、最小値のインデックスを取得するには「np.argmax」「np.argmin」を用います。

また通常のリストの場合は一発で最大値、最小値のインデックスを取得する方法はなく、「index」というコマンドと組み合わせて用います。

import numpy as np

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

print(np.argmax(a))
print(np.argmin(a))

print(b.index(max(b)))
print(b.index(min(b)))

実行結果
5
4
5
4

どちらの方法でも最大値9のインデックス「5」と最小値のインデックス「4」が取得できました。

ちなみに「b.index(X)」で「b」のリストの中で「X」となる要素のインデックスを取得できます。

その「X」に「max(b)」とすることで「b」のリストの中の最大値を取得するため、最終的にそのインデックスを取得できるというわけです。

通常のリストから最大値、最小値のインデックスを取得するもう一つの方法

numpyのリストであれば、最大値、最小値のインデックスを取得するのは「np.argmax」「np.argmin」と楽なのは分かりました。

また通常のリストだと「X.index(max(X))」「X.index(min(X))」 とちょっと分かりにくくなってしまうのも分かりました。

では通常のリストで最大値、最小値のインデックスを取得する、もう少し覚えやすい方法はないのでしょうか。

個人的に好きな方法は「numpyの配列にしてしまう」という方法です。

「np.array(X)」とすることでリストXをnumpyの配列に変換することができます。

そうすると最大値、最小値、またそのインデックスはこのように取得できます。

import numpy as np

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

print(np.max(np.array(b)))
print(np.argmax(np.array(b)))

print(np.min(np.array(b)))
print(np.argmin(np.array(b)))

実行結果
9
5
0
4

単純なことですが、「数値の計算はnumpyで行う」と割り切ってしまうと、覚えなければいけないことが少なくなるのでいいかもしれません。

そこら辺は個人の好みがあると思うので、こう言った一例もあるんだくらいに思ってもらえればいいかなと。

ということで今回はnumpyを使った最大値、最小値、そしてそのインデックスの取得方法を解説しました。

次回はさらに平均値、標準偏差など統計に用いる値を取得していきましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次