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]])
ややこしい…