😬
【Python】NumPyのスライスの方法
スライスとは?
スライスは、配列データなどから条件に一致する部分を抜き出す操作です。
Pythonのリストや、NumPyの配列に対して、**[開始:終了] **といった形でスライスを指定することができます。
それでは、コードで使い方を確認しましょう。
import numpy as np
# 一次元配列を用意
arr = np.array([0, 1, 2, 3, 4, 5])
# インデックス1から2までの要素を取得
sliced_arr = arr[1:3]
print(sliced_arr)
# 出力: [1 2]
ちょっとややこしいのが「終了」。
「n番目のインデックスまで」、という意味ですが、Pythonのスライシングでは、終了のインデックス自体は含まれないので、n-1のインデックスが終了場所となります。
上の例だと、終了に3
を指定しているので、インデックスでいうと2
の位置にある2
が終了地点となります。
ですので、出力には2
も含まれています。
ステップ
じつはスライスは、[開始:終了] ではなく、[開始:終了:ステップ] といったかたちで、最後にステップ数を指定できます。
ステップとは、要素をスキップする間隔です。
省略すると自動的に1がセットされます。
それではこちらもコードで確認しましょう。
import numpy as np
# 一次元配列を用意
arr = np.array([0, 1, 2, 3, 4, 5])
# インデックス1から2までの要素を取得
sliced_arr = arr[0:5:2]
print(sliced_arr)
# 出力: [0 2 4]
二次元配列
これまでの例では一次元配列をみてきましたが、つぎは二次元配列をみていきましょう。
import numpy as np
# 二次元配列
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
# 行インデックス0、列インデックス1から2までの要素を取得
sliced_arr = arr[0, 1:3]
print(sliced_arr)
# 出力: [1 2]
import numpy as np
# 二次元配列
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
# 行インデックス1から2、列インデックス0から1までの要素を取得
sliced_arr = arr[1:3, 0:2]
print(sliced_arr)
# 出力:
# [[3 4]
# [6 7]]
Discussion