スライスによる抽出
コロン記号:はスライスとよばれ、範囲を指定した要素の抽出に用いられる。具体例を見てみよう。
まず、形状が (5, 2) の配列を用意する。
code:slice11.py
import numpy as np
x = np.array(0, 1], 2, 3, 4, 5, 6, 7, [8, 9)
print('# 配列', x.shape, type(x))
print(x)
print('# 要素をピンポイントで指定')
print(x1, 0)
指定した次元全体の抽出
添字の箇所にスライスを書くと、「該当する全ての要素」という意味になる。
2次元配列を行列と考えたときに、1番目の添字は列要素に相当するので、
code:(続き).py
col = x:,0
print('# 0列目\n', col, col.shape, type(col))
col = x:,1
print('# 1列目\n', col, col.shape, type(col))
2番目の添字が行要素に相当するので、
code:(続き).py
row = x2,:
print('# 2行目\n', row, row.shape, type(row))
row = x-1,:
print('# 終端行\n', row, row.shape, type(row))
以上のような抽出を行うことができる。抽出された配列は次元数が1つ減ることに注意、つまり、2次元配列をもとに新たな1次元配列が作られる。
範囲と刻みの指定
スライスの前後に数値を置くことで、範囲の開始や終了要素を指定できる。
配列名 [ 開始:終了]
code:slice12.py
import numpy as np
a = np.arange(10)
print('全要素 -------------')
print(a) # (1)
print(a:) # (1')
print('2~要素 -------------')
print(a2:)
print('~7要素 -------------')
print(a:8)
print('2~7要素 -------------')
print(a2:8)
2つのスライスを用いると、3番目の値で刻み幅を指定できる。
配列名[開始:終了:刻み]
code:slice13.py
import numpy as np
a = np.arange(10)
print('全要素を2刻みで -----')
print(a::2)
print('8~3要素を-2刻みで -----')
print(a8:2:-2)
/icons/hr.icon
※ ブラウザのバックボタンで戻る
https://scrapbox.io/files/65041f7e7f5099001c844ec3.png