読者です 読者をやめる 読者になる 読者になる

numpyの多次元配列の扱いではまったところ

numpyの多次元配列の要素にアクセスするのにa[i][j]って書くのとa[i, j]って書くのの違いを区別してなかったせいではまった。
それぞれの挙動を見てみると、

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a[1][1]
4
>>> a[1, 1]
4

この場合は結果は同じになるので、今まであまり違いを意識したことはなかった。今回問題になったのはつぎのような場合。

>>> a[:][1]
array([3, 4])
>>> a[:, 1]
array([2, 4, 6])

a[i][j]って書くと、aのi番目の配列a[i]をとってきて、a[i]のj番目の要素にアクセスするので、a[:][1]ならば、a[:](= a)をとってきて、その1番目の要素にアクセスするので結局a[1]が得られる。
一方a[i, j]って書くと、aのi行j列の要素にアクセスするので、a[:, 1]ならば、全部の行の1列目の要素が得られる。

なるほどなぁって思ったのでメモ_φ(・_・