今回は、thresholdの操作を紹介します。
(正式な呼称なのか知らない…)
使用目的は、データの分割や、データの一部を抽出するときのために使います。
実際の式変形を見てみましょう。
a = np.arange(24)
a = np.arange(24) print(a) threshold = 10 b = a[:threshold] print(b) c = a[threshold:] print(c)
#a
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
#b
[0 1 2 3 4 5 6 7 8 9]
#c
[10 11 12 13 14 15 16 17 18 19 20 21 22 23]
numpyで0~23の数字が格納されたndarray型のデータを作成しました。
b, c, では、コロンがついている場所が違います。
b –> [:threshold] #thresholdよりも左側のデータ
[0 1 2 3 4 5 6 7 8 9]
c –> [threshold:] #thresholdよりも右側のデータ
[10 11 12 13 14 15 16 17 18 19 20 21 22 23]
続いて、画像データで見てみましょう。
画像が3枚、480×640のサイズ、3チャンネル(RGB)の画像が格納されたsumImageデータがあるとします。
sumImage.shape #(3, 480, 640, 3)
それでは、sumImageデータを基にしてthresholdでのデータ分割、抽出の方法を見ていきましょう。
sumImage.shape[:1] #(3)
(3, 480, 640, 3)の中で、1つ目のデータのみをデータ抽出しています。
※画像データが移行された訳ではない。shapeの情報を参照しているのみ。
cc = sumImage.shape[:3]
#(3, 480, 640)
同じく、3つ目よりも前の情報を取得しています。
bb = sumImage.shape[-3:]
#(480, 640, 3)
マイナスを使うことが出います。
マイナスは後ろから、という指定です。
では、shapeの情報だけではなく、画像データも分割、抽出することが出来るのでしょうか。
ff = sumImage[1:]
gg = ff.shape
#(2, 480, 640, 3)
1つ目以降の画像データ、2つ目と3つ目の画像データを含む(2, 480, 640, 3)が抽出されました。