機械学習、強化学習の調査録

機械学習関連のことをまとめていきます。強化学習関連が多いかもしれません

【Python】配列の抽出(array[:]について)

pythonの配列の抽出について調べたことをお話しようと思います。
pythonのコードでよく見る[:]ですね。

基本

array[x:y]

まず、基本的なarray[x:y]の意味ですが、
arrayのx番目の要素からy番目の要素まで」を意味しています。

具体例を見てみたほうが早いです。
元の配列として以下のような配列を用います。

arr = ['A','B','C','D','E','F']

では、この配列でarr[1, 4]がどのような配列になるか見てみます。

arr[1:4] #=>  ['B', 'C', 'D']

arrの1番目の要素から4番目の要素が抽出されました。

array[x:]

では、array[x:]はどうなるでしょうか。
同様の例を用いて見てみます。

arr[2:] #=>  ['C', 'D', 'E', 'F']

上記の例でわかると思いますが、array[x:]は 「x番目の要素から、最後の要素まで」を意味します。

ちなみにxが負の場合(array[-x:])は
「後ろから-x番目から」を意味します。 例えば

arr[:-2] #=> ['E', 'F']

array[:x]

array[:x]も同じように

arr[:3] #=>  ['A', 'B', 'C']

上記の例でわかると思いますが、array[:x]は 「最初の要素からx番目の要素まで」を意味します。

応用

array[::z]

実はarray[::z]のような方法もあります。
これは「zで割り切れる番目の要素」を意味します。
言葉にするとわかりにくいですが、 具体例で見てみます。

a[::2] #=> ['A', 'C', 'E']

上記は「2で割り切れる番目の要素」となっていることがわかります。

x, yを指定すれば、xからy番目の配列を生成してから同様の処理を行います。

a[1:5:2] #=> ['B', 'D']

array[::-1](反転 reverse)

さらにおもしろいことにarray[::-1]は配列の反転を表します。

a[::-1] #=> ['F', 'E', 'D', 'C', 'B', 'A']

参考文献

How to Slice Lists/Arrays and Tuples in Python | Python Central

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)