プログラミングにおけるスライスとは、通常、文字列、タプル、リストから、それぞれ部分文字列、部分タプル、部分リストを取得することを指します。
Pythonはこれら3つだけでなく、あらゆるイテラブルをスライスする簡単な方法を提供します。
イテラブルとは、その名の通り、反復処理できるオブジェクトのことです。
この記事では、PythonのNumpy配列のスライスについて知っておく必要があるすべてのことを説明します。
NumPyの配列スライス
NumPyの配列をスライスする最も一般的な方法は、以下の構文で :
演算子を使用することである。
array[start:end]
array[start:end:step]
パラメータ start
は開始インデックス、 end
は終了インデックス、 step
は「ステップ」オーバーされるアイテムの数を表します。
NumPyはフリーのPythonパッケージで、特にn次元配列を提供します。
NumPyでの1次元配列のスライスは、Pythonでの通常のリストのスライスと同じ記法で行うことができます。
import numpy as np
arr = np.array([1,2,3,4])
print(arr[1:3:2])
print(arr[:3])
print(arr[::2])
出力
[2]
[1 2 3]
[1 3]
2次元NumPy配列のスライシング
NumPyの2次元配列は配列の配列であり、3次元配列は配列の配列の配列であり、そのような配列です。
2次元配列は以下のような行列として表現することができます。
import numpy
arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
この行列を出力してみよう。
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
2次元配列のスライスは、配列と行列のどちらにもなり得ます。
行列になる構文は次のようになります。
arr[startx:endx:stepx, starty:endy:stepy]
配列になるシンタックスは
arr[startx:endx:stepx, const]
arr[const, starty:endy:stepy]
この構文を利用すると、x軸上の startx
から endx
までの列と、元の行列の y軸上の starty
から endy
までの行を要素とする行列が得られます。
この行列をどのようにスライスするか、そしてスライスした結果どうなるかを見てみましょう。
import numpy
arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
print("The original matrix:")
print(arr)
print("A sliced submatrix:")
print(arr[1:4,2:4])
print("A sliced subarray:")
print(arr[1,:])
print("A sliced submatrix:")
print(arr[:,3:])
print("A sliced subarray:")
print(arr[:,3])
このコードセグメントは次のように出力されます。
The original matrix:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
A sliced submatrix:
[[ 7 8]
[11 12]
[15 16]]
A sliced subarray:
[5 6 7 8]
A sliced submatrix:
[[ 4]
[ 8]
[12]
[16]]
A sliced subarray:
[ 4 8 12 16]
結論
Pythonで任意のシーケンスをスライスするのは簡単で、シンプルで、直感的です。
ネガティブインデックスは、配列の最初または最後の数個の要素を取得したり、その順序を逆転させたりする簡単な方法を提供します。
今回は、Python の NumPy 配列をスライスする方法について説明しました。