😬

【Python】NumPyのスライスの方法

2024/10/03に公開

スライスとは?

スライスは、配列データなどから条件に一致する部分を抜き出す操作です。

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