[:x] Ndarrayや配列における、thresholdの考え方。

今回は、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)が抽出されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です