🐻

numpyのスライスについて解説

2023/09/16に公開

今回はnumpyのスライスについて解説します。

スライスとは?

スライスは

  • 配列データなどから条件に一致する部分を抜き出す

操作です。

PythonのリストやNumPyの配列に対して、[開始:終了:(step数)] といった形でスライスを指定することができます。

コードで使い方を見ていきましょう。

コード

1次元から見ていきます。

・1次元配列のスライス

import numpy as np

# 1次元配列
arr1 = np.array([0, 1, 2, 3, 4, 5])

# インデックス1から3までの要素を取得
after_slice1 = arr1[1:4]
print("Slice 1:", after_slice1)  # 出力: Slice 1: [1 2 3]

# インデックス2から最後までの要素を取得
after_slice2 = arr1[2:]
print("Slice 2:", after_slice2)  # 出力: Slice 2: [2 3 4 5]

# インデックス0から最後まで、2ステップで要素を取得
after_slice3 = arr1[::2]
print("Slice 3:", after_slice3)  # 出力: Slice 5: [0 2 4]

出力

Slice 1: [1 2 3]
Slice 2: [2 3 4 5]
Slice 3: [0 2 4]

条件を指定して、元の配列から値を抜き出すことができていますね。

次は2次元配列について見ていきます。
・2次元配列のスライス

import numpy as np

# 2次元配列
arr2 = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])

# 行インデックス1、列インデックス1から2までの要素を取得
after_slice4 = arr2[1, 1:3]
print("Slice 4:", after_slice4)  # 出力: Slice 4: [4 5]

# 行インデックス1から2、列インデックス1から2までの要素を取得
after_slice5 = arr2[1:3, 1:3]
print("Slice 5:", after_slice5)
# 出力:
# Slice 5: [[4 5]
#           [7 8]]

# 行インデックス0からステップ2、列インデックス0から1までの要素を取得
after_slice6 = arr2[0:3:2, :2]
print("Slice 6:", after_slice6)
# 出力:
# Slice 6: [[0 1]
#           [6 7]]

出力

Slice 4: [4 5]
Slice 5: [[4 5]
 [7 8]]
Slice 6: [[0 1]
 [6 7]]

2次元配列では、2回条件を指定して、順番に抜き出しを行います。
コードに示すように、一行でまとめて要素の抜き出しが可能です。

同様に、3次元配列では条件を3つ指定することができます。それ以上の多次元配列も同様です。
これがスライスの基本的な使い方になります。

まとめ

まとめです。

スライスは

  • 配列データなどから条件に一致する部分を抜き出す

操作でした。
また高次元データでは、カンマ区切りで順番に抜き出しを行います。

今回は以上です。
最後まで読んでいただきありがとうございました!

Discussion