monomeg Lab. 第2開発室

プログラミングで学んだことの覚書やら、考察ネタやら、なんでもあり

NumPyの多次元配列でスライスする

NumPy配列を使ったPythonのコードを読んでいたら、いきなり

a[:,0]

というコードが出てきて困惑していました。(aは2次元配列)

:がスライスだということは知っていましたが、「コンマあるし…コロンしか無いし、なんだこれ…」とか思ってました。

調べていくと、どうも多次元の場合はコンマで区切って範囲指定するらしい。また、Python自体のスライス機能で、:のみは全体範囲を意味することを知りました。

インデックス0で、0次元目のスライスを指定し、インデックス1で1次元目のスライスを指定します。

インデックス1に単に0と数字を指定すると、「1次元目のインデックス0の要素」にアクセスします。その場合、スライスしたリストは別インスタンスの1次元配列となります。

>>> import numpy as np
>>> a = np.array([[1,2],[3,4]])
>>> a
array([[1, 2],
       [3, 4]])
>>> a[:]
array([[1, 2],
       [3, 4]])
>>> a[:,0]
array([1, 3])
>>> a[:,0:1]
array([[1],
       [3]])

ややこしい…