Python NumPy 多次元配列のスライシング #4

株式会社リュディアです。引き続き NumPy ndarray 多次元配列のスライシングについてまとめていきたいと思います。

前回までの NumPy ndarray 多次元配列のスライシング のまとめへのリンクは以下を参考にしてください。

今回は2次元配列の任意領域のスライシングについてまとめます。まず以下の絵を見てください。

画像1

今までと同様の 4 x 5 の2次元配列です。この2次元配列から緑線で囲った領域をスライシングすることを考えます。以下のコードを見てください。

import numpy as np

np_2d = np.arange(20).reshape(4,5)
print(np_2d)

print(np_2d[0:2, 1:3])

#
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]]
#
# [[1 2]
#  [6 7]]
#

緑線で囲った領域は行番号 0, 1 に相当、列番号の 2, 3 に相当します。NumPy では [行指定, 列指定] というようにカンマで区切って行と列の指定を行えますので [0:2, 1:3] と指定することで行番号 0, 1 と列番号 2, 3 に合致します。ではもう1つ別の例を見てみましょう。以下の図の緑線で囲まれた部分をスライシングします。

画像2

どのように指定すればよいか考えてみてください。頭に浮かんだら以下のコードと実行結果を見てください。

import numpy as np

np_2d = np.arange(20).reshape(4,5)
print(np_2d)

print(np_2d[1:3, 1:4])

#
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]]
#
# [[ 6  7  8]
#  [11 12 13]]
#

今回は2次元配列の任意形状のスライシングを行いました。よく使う技術ですのでしっかりと理解しておいてください。

Python NumPy 多次元配列のスライシング に関するまとめの続きは以下からどうぞ。

では、ごきげんよう。



いいなと思ったら応援しよう!