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を使った最大値、最小値、そしてそのインデックスの取得方法を解説しました。
次回はさらに平均値、標準偏差など統計に用いる値を取得していきましょう。
ではでは今回はこんな感じで。
コメント