Windows11 WSL2 Ubuntu Python Ⅱ
データのスライシング(1次元)
ここからは、1次元配列データのスライシングについて説明していきます。
NumPy の ndarray は多次元配列を扱うデータ構造で、スライシングという機能を備えています。
ここでは、最も簡単な1次元配列データをスライスします。
- NumPy ndarray 1次元配列作成
簡単な NumPy の ndarray 1次元配列を作成します。
import numpy as np
x = np.arange(11)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
0 ~ 10 の11個のデータが作成されました。 - 1次元配列 x の内容を確認
x[0] = 0
x[1] = 1
・・・・・・・・
x[9] = 9
x[10] = 10
負のインデックス番号を使うこともできます。
x[-1] = 10
x[-2] = 9
・・・・・・・・
x[-10] = 1
x[-11] = 0
負のインデックスはわかりにくいですね。 - スライス指定方法
[
開始位置(始点)start:
終了位置(終点)stop :
間隔(step)
]
と書くことでそれぞれの次元ごとに複数の要素を抽出することができます。
stop に指定されたインデックスはスライシングの際抜き出されません。
これが曲者です。
例①、2番目から8番目まで1個おきにスライス。
x[2:9:1]
結果は
array([ 2, 3, 4, 5, 6, 7, 8])
です。
例②、0 番目から10番目まで1個おきにスライス。
x[0:11:1]
結果は
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
です。
10番目を指定するために11を設定しました。
同じことを負のインデックスを使用して
x[-11:-1:1]
でうまく行くかと思いきや
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
となってラストの x[10] = 10 がありません。
残念! - スライス指定省略
スライス範囲が最初から、または最後まで、ステップは省略することができます。
開始位置(始点)start省略 :stop:step
終了位置(終点)stop 省略 start::step
間隔(step)省略 start:stop
例③、0 番目から10番目まで1個おきに負のインデックスを使用してスライス。
終了位置(終点)stop と間隔(step)を省略して
x[-11:]
結果は
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
となってうまく行きました。 - ステップを -1 指定
ステップを -1 指定すると逆順に並べ代えることができます。
x[::-1]
結果は
array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
ここまでで、1次元配列データのスライシングができるようになりました。
引き続き、多次元配列を扱うデータ構造でスライシングして行きます。