忘備録です。pythonで多重配列をsliceを使って取り出す方法を忘れがちなので、もう困らないように残しておきます。
#numpyで配列を作る
arr2d = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
こうすると以下の多重配列が作られます。
([[ 5, 10, 15],
[20, 25, 30],
[35, 40, 45]])
この中から、右上の
[10, 15]
[25, 30]
を取り出したいと思います。
方法は色々あると思いますが、
arr2d[:2, 1:]
で取り出せます。以下で説明。
#まずは行を指定
arr2d[:2]
で取り出せる部分はどこでしょうか。
これは、arr2dの行を、インデックス2の1つ前まで取り出す、ということになります。
つまり
([[ 5, 10, 15],
[20, 25, 30]])
が取り出されます。
#次に列を指定
続いて上記の行列から、列を取り出します。
完成形は
arr2d[:2, 1:]
なのですが、ここで注目するところは[1:]のところ。
終了インデックスを省略すると、インデックス1から最後までを取り出すことができます。
ここでは列を指定しているので、取り出されるのは
([[10, 15],
[25, 30]])
となります。
#まとめ
多次元配列arrayにおいて、array[n, m]は、まずnで行を指定し、mで絞るイメージ!!笑
スライスは、開始インデックスを省略すると、先頭のから終了インデックスの前のまでが抽出される。
一方、終了インデックスを省略すると、開始インデックスから最後までが抽出される、ということを忘れずに。
以上。