LoginSignup
29

More than 5 years have passed since last update.

pythonで多重配列をsliceを使って取り出す方法。

Posted at

忘備録です。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で絞るイメージ!!笑

スライスは、開始インデックスを省略すると、先頭のから終了インデックスの前のまでが抽出される。

一方、終了インデックスを省略すると、開始インデックスから最後までが抽出される、ということを忘れずに。

以上。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29