NumPyのndarrayによるプログラミングについて、今回は真偽値配列関数、ソート関数に絞って説明しよう。
特に配列のソートはプログラミングにおいて頻出する重要機能のため、完全にマスターしておきたいところだ。
コンテンツ
真偽値配列関数
真偽値(True・False)に対して関数を適用することができる。
sum関数
例えば真偽値配列に対し、sum関数を適用すると以下のような結果が得られる。
import numpy as np
arr = np.random.randn(100)
(arr > 0)
# array([False, True, False, False, True, True, False, True, False,
# True, False, False, False, False, False, True, True, False, ............
(arr > 0).sum() # 48
真偽値に関数を適用すると、Trueは1、Falseは0として扱われ、sum関数ではTrueの数をカウントした結果が得られるというわけだ。
any関数
any関数は、ndarrayのうち一つでもTrueが存在すればTrueを返す。
import numpy as np
arr = np.array([False, True, False, False])
arr.any() # True
all関数
all関数は、ndarrayの要素全てがTrueの時、Trueを返す。
import numpy as np
arr = np.array([True, True, True, True])
arr.all() # True
ndarrayのソート
Python標準のリストにもソート機能はあるが、ndarrayにもsort関数が用意されている。
なお、sort関数はソートした結果のコピーを返さず、元のndarrayを上書きする。
import numpy as np
arr = np.random.randn(5)
print(arr)
# [ 0.28203596 0.70142592 1.08386279 0.73619642 -0.21789111]
arr.sort()
print(arr)
# [-0.21789111 0.28203596 0.70142592 0.73619642 1.08386279]
多次元配列のソート
もちろん多次元配列をソートすることもできる。
多次元配列の場合は、sort関数の引数に軸を指定し、任意の軸に沿ったソート結果を得られることができる。
import numpy as np
arr = np.random.randn(4, 3)
print(arr)
# [[-0.77369579 0.00389253 -0.37738373]
# [ 0.62122156 1.04506444 -1.60011817]
# [-1.05225141 0.24721429 -1.26201976]
# [-0.20017432 1.34587581 -0.6662419 ]]
arr.sort(1)
print(arr)
# [[-1.60011817 -1.05225141 0.00389253]
# [-1.26201976 -0.77369579 0.24721429]
# [-0.6662419 -0.20017432 1.04506444]
# [-0.37738373 0.62122156 1.34587581]]
ソートした結果のコピーを得たい場合は、「np.sort()」を使う。
「np.ndarray()」と違う点に注意だ。
import numpy as np
arr1 = np.random.randn(5)
print(arr1)
# [ 0.01080367 0.73556961 0.92731355 1.35046635 -0.85196875]
arr2 = np.sort(arr)
print(arr1)
# [ 0.01080367 0.73556961 0.92731355 1.35046635 -0.85196875]
print(arr2)
# [-0.60228592 -0.60076974 -0.22015877 1.06724723 1.6829256 ]